【发布时间】:2013-07-17 14:08:04
【问题描述】:
我有问题。到目前为止的故事:
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 然后连接到数据库,并尝试通过以下方式使用新数组更新该单元格,但这不起作用(!):
$arrayZ = json_decode($_POST['arrayY'], true);
mysql_query("UPDATE userbase SET db_column = $arrayZ WHERE id=0", $con);
mysql_close($con);
我已经尝试在 PHP2 中序列化 $arrayZ,以及我在 Stackoverflow 上找到的一整套其他解决方案,但它们都不起作用(或者我当然没有正确应用它们)现在我找到了自己死心塌地……
我希望你的才能比我自己的更进一步!
【问题讨论】:
-
您的数据库架构有缺陷 - 拥有多值单元格是一个可怕的想法。
-
“不工作”并不多...请提供更多信息为什么它不工作
-
请做一个 print_r($_POST);在 PHP2 的顶部并在此处发布您的输出。
-
看来你不需要 JSON.stringify 因为它已经是 json
-
史蒂文,这是我得到的: Array ( [arrayZ] => [1,70] )
警告:无法修改标头信息 - 标头已发送by (输出开始于 .../PHP2.php:3) 在 .../PHP2.php 第 5 行
警告:session_start() [function.session-start]:无法发送会话缓存限制器 - 标头已发送(输出开始于... /PHP2.php:3) 在 .../PHP2.php 第 7 行
标签: php javascript jquery mysql json