【发布时间】:2011-01-05 14:46:29
【问题描述】:
我从 jQueryscript 向我的 PHP 页面发送了一个有效的 JSON 字符串:
var data = '{
"data":[
{
"id":"12",
"checked":"true"
},{
"id":"4",
"checked":"false"
},{
"id":"33",
"checked":"false"
}
]
}';
$.post ("page.php", { data_input:data }, function (data) {
// code
});
在我的 PHP 页面中获取数据后,我使用json_decode 方法对其进行解析,然后尝试在为PDO 查询创建的foreach 语句中使用它:
<?php
$data_input = json_decode ($_REQUEST['data_input'], true);
$sql = "UPDATE my_table SET user_enabled = :checked WHERE node_prop_id = :id";
$stmt = $dns->prepare ($sql);
foreach ($data_input as $data) {
$ok = $stmt->execute ($data);
$num = $stmt->rowCount ();
}
if ($ok) return 1;
else return 0;
?>
这会返回错误:
PHP 警告:在第 XX 行的 /home/.../page.php 中为 foreach() 提供了无效参数
我能否找到在foreach 语句中使用我的 JSON 数据的方法?
【问题讨论】:
-
您是否检查过 $_REQUEST['data'] 字符串不包含转义字符?如果确实如此(而且他们经常这样做),我敢打赌 json_decode 无法对其进行解码,并返回 null。您可以使用 stripslashes($string) 摆脱它们