在PHP文件中编码json

时间:2016-10-08 13:39:29

标签: php json mysqli pdo

实际上我在我的php文件(使用PHP)中进行了JSON编码并且它正在工作,但是当我在另一个PHP(错误PHP)文件中执行相同步骤时,它不起作用请帮助我

错误PHP

<?php

require_once('dbConnect.php');
$id =$_POST['id'];
$sql= "select title,description,image,price,cid FROM products a where a.cid='$id'";

$res=mysqli_query($con,$sql);

$result = array();

while ($row=mysqli_fetch_array($res)){
        array_push($result,array('title'=>$row['0'],
                                 'description'=>$row['1'],
                                 'image'=>$row['2'],
                                 'price'=>$row['3'],
                                )
        );
}
echo json_encode(($result));

mysqli_close($con);
?>

我知道这是一个非常愚蠢的问题但是我不知道为什么Erro.php文件不起作用,而且我在查询中的硬代码 $ id 比Error.php有效 编辑:删除工作php

1 个答案:

答案 0 :(得分:1)

然后我们必须假设$_POST['id']不存在或者不包含有效数据或者查询中包含错误。

您应该对此类代码进行编码,以至少以可用的方式报告此类条件,例如

<?php

require_once('dbConnect.php');

if ( ! isset($_POST['id']) ) {
    echo json_encode(array('status'=>false, 'msg'=>'Input missing'));
    exit;
}

$_POST['id'];

// amend select to select only what you want
$sql= "select title,description,image,price
        FROM products
        where cid = '$id'";

$res=mysqli_query($con,$sql);
if ( ! $res ) {
    echo json_encode(array( 'status'=>false, 
                            'msg'=>'Query failed',
                            'sql_msg' => mysqli_error($con)
                            )
                    );
    exit;
}

$result = array();

// use mysqli_fetch_assoc() and the columns names are used
// so you can simply add the $row to the $result array
while ($row=mysqli_fetch_assoc($res)){
    $result[] = $row;
}

echo json_encode(array('status'=>true, 'results'=>$result));
?>

现在对您的javascript做一个小修改,以便它首先检查状态,并在测试时显示任何错误消息。