我尝试做的是,如果选择的行数大于或等于1,则回显此json_encode(array("item" => $item));
,否则,如果选择的行数等于零,则回显{{1 }}。但这不起作用。输出的结果是,即使选择的记录大于1,也没有后期值返回。有什么帮助吗?
腓
echo json_encode(array("failed" => 'failed'));
的Ajax
<?php
if(isset($_POST['id'])) {
$id= $_POST['id'];
$sql = $mysqli->query("SELECT item FROM table WHERE id='$id'");
while($row = $sql->fetch_assoc())
{
$item= $row['item'];
}
if(($sql->num_rows)>= 1){
echo json_encode(array("item" => $item));
} else {
echo json_encode(array("failed" => 'failed'));
}
}
?>
答案 0 :(得分:0)
在.php文件中,您正在检查是否设置了$_POST['id']
但是您要发布pr_code
。
检查if(isset($_POST['pr_code']))
是否应该这样做。
你需要改变:
if(($sql->num_rows)>= 1)
到
if(($row->num_rows)>= 1){
答案 1 :(得分:0)
假设:id=...
表示有一个或0个记录,而不是更多
只是尝试获取这一条记录。如果fetch_assoc()“告诉”你没有这样的记录(通过返回FALSy),发送错误信息。
还要确保您的脚本始终以一致的方式返回某些内容
编辑:查询本身也可能失败;你必须检查(并可能报告)。
<?php
if(!isset($_POST['id'])) {
$result = array('failed'=>'missing parameter: id');
}
else {
// remember little Bobby Tables, http://xkcd.com/327/
$id= $mysqli->real_escape_string($_POST['id']);
$sql = $mysqli->query("SELECT item FROM table WHERE id='$id'");
if ( !$sql ) {
$result = array('failed' => 'query failed');
}
else {
$result = $sql->fetch_assoc();
if ( !$result ) {
$result = array("failed" => 'no such item');
}
}
}
echo json_encode($result);