首页 > 解决方案 > 使用 PHP 在 SQL 中编辑数组

问题描述

我有一个数据库,其中有一列包含数组:

数据库示例

我需要一条 SQL 语句来更新数组以向其中添加另一个值:

UPDATE dbname SET array = ["737","669","newarraynumber"] WHERE id = 1

如何使用 PHP 更新这个数组?

什么创建了数组:

            var items = document.getElementsByClassName('box checked');
            var string = '/beheer/po.php?'
            var length2 = items.length - 1;
            for (var i = 0; i < items.length; i++){
                string += 'id[]=';
                string += items[i].name;

                if(length2 > 0){
                    string += '&';
                }

                length2--;
            }

            if(string == "/beheer/po.php?"){
                alert('select at least one row')
            } else{
                location.replace(string);
            } 

标签: phpsqlarrayssql-update

解决方案


您的数组可能只是一个看起来像数组的字符串,我怀疑它会在代码中的某处被解析为一个。我使用的 SQL 系统实际上没有数组功能。

要添加到字符串,您需要将字符带到右大括号,然后使用新的右大括号添加新值。我认为在 SQL 中执行此操作的最简单方法是使用 LEFT 和 LEN:

UPDATE dbname SET array = LEFT(array, LEN(array)-1)+ ', "' + 'newarraynumber' + '"]'

通过这种方式,您可以找到现有字符串的长度 (LEN),从字符串的 LEFT 开始,取许多减一字符,不包括结束的 ']',并将其用作替换字符串的基础。

这绝对不是最好的方法,但是在遗留代码中处理导致这成为您的数据库外观的决策,这将满足您的要求。

*这假设字符串“array”格式正确,看起来像您发布的内容,没有多余的空格,右大括号是最后一个字符。我个人也会在准备好的语句中放入新的数组值,这通常是避免 sql 注入问题的好习惯,这就是为什么我没有一个字符串来插入值和围绕它的字符


推荐阅读