将JS数组传递给PHP,然后更新MySQL


Passing JS-array to PHP, then updating MySQL

我有个问题。迄今为止的故事:

PHP1从数据库中读取一个仅包含整数的数组,其形式如下:
[0,70,44,…]

因为它包含的实体数量各不相同,所以我希望能够读取整个数组并将其存储到数据库的一个单元中——解决方案决不能忽视这一点

PHP1包含一些JS,允许用户在网站上做一些事情,这会改变数组中的一个实体,这使得它成为,例如。;
[0,75,44,…]

到目前为止,一切都很好。

现在我想要这个新数组来替换数据库中的数组,这是我未能实现的中心目标。


我目前正在使用的-不起作用:

PHP1执行一些AJAX魔术,并将此数组发送到PHP2,效果良好:

var arrayX = [0, 75, 44, ...];
var arrayY = JSON.stringify(arrayX);
$.ajax({
    url: 'PHP2.php',
    type: 'post',
    data: {arrayY: arrayY }
});

PHP2然后连接到DB,并尝试通过以下方式用新数组更新该单元格,但不起作用(!):

$arrayZ = json_decode($_POST['arrayY'], true);
mysql_query("UPDATE userbase SET db_column = $arrayZ WHERE id=0", $con);
mysql_close($con);

我尝试过在PHP2中序列化$arrayZ,以及在Stackoverflow上找到的一整套其他解决方案,但都不起作用(当然,或者我没有正确应用它们),现在我发现自己死定了。。。


我希望你的才华能让我比自己走得更远!

我假设db_column包含一个字符串值,因此您可能只需要在SQL字符串中用引号括住$arrayZ。

mysql_query("UPDATE userbase SET db_column = '$arrayZ' WHERE id=0", $con);

但正如Fake51所指出的,您的数据库模式是有缺陷的。

此外,您很容易受到SQL注入攻击。