用PHP在SQL中编辑数组

用PHP在SQL中编辑数组,php,sql,arrays,sql-update,Php,Sql,Arrays,Sql Update,我有一个数据库,它有一个包含数组的列: 我需要一个SQL语句来更新数组以向其添加另一个值: UPDATE dbname SET array = ["737","669","newarraynumber"] WHERE id = 1 如何使用PHP更新此数组 创建阵列的内容: var items = document.getElementsByClassName('box checked');

我有一个数据库,它有一个包含数组的列:

我需要一个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);
            } 
var items=document.getElementsByClassName('box checked');
var string='/beheer/po.php?'
var length2=items.length-1;
对于(变量i=0;i0){
字符串+='&';
}
长度2--;
}
如果(字符串==“/beheer/po.php?”){
警报('至少选择一行')
}否则{
位置。替换(字符串);
} 

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

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

UPDATE dbname SET array = LEFT(array, LEN(array)-1)+ ', "' + 'newarraynumber' + '"]'
通过这种方式,您可以找到现有字符串的长度(LEN),从字符串的左侧开始,并使用许多减号1字符(不包括结尾“]”),然后将其作为替换字符串的基础

这肯定不是最好的方法,但是使用遗留代码中的决策会导致数据库的外观,这将满足您的要求


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

您的列命名为
数组
?(我可以建议重命名为更有意义的名称吗?)它是什么类型的?一串Json?你试过使用引号吗
updatedbname SET array='[“737”、“669”、“newarraynumber”]',其中id=1
@kerbholz no,它不是命名数组。它被用作示例,我用创建它的代码编辑了这篇文章。如果我是对的,那就是一个字符串。我没有创建原始代码。虽然它不是一个实际的数组,它只是一个看起来像它的字符串。因此,您需要像字符串一样更新它。更好地规范化数据库。@Qirel是否仍有可能提取字符串中的值并创建一个与之类似的新值?当然可能。但我怀疑这样做是不是一个好主意,就像我说的——规范化数据库。