我正在编写一个PHP文件,在计算检索到的记录数量之前,选择符合条件的表中的所有记录。
我想做的是:假设它检索了5条记录,我希望PHP文件只返回[{"count":5}]
有人能提出一种方法使文件返回上述内容吗?
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
$conn = new mysqli("localhost", "userid", "password", "dbname");
$admin_no = $_GET['admin_no'];
$result = $conn->query("Select lecturer_id,admin_no,message,date_time_sent,sender from chat where lecturer_id = 'shizukakudo' and admin_no = '". $admin_no ."'");
$outp = "[";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "[") {$outp .= ",";}
$outp .= '{"lecturer_id":"' . $rs["lecturer_id"] . '",';
$outp .= '"admin_no":"' . $rs["admin_no"] . '",'; $outp .= '"message":"' . str_replace('"','',$rs["message"]) . '",';
$outp .= '"date_time_sent":"' . $rs["date_time_sent"] . '",';
$outp .= '"sender":"' . $rs["sender"] . '"}';
}
$outp .="]";
$conn->close();
echo($outp.length);
?>
像这样使用json_encode()
:
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
$conn = new mysqli("localhost", "userid", "password", "dbname");
$admin_no = $_GET['admin_no'];
$result = $conn->query("Select lecturer_id,admin_no,message,date_time_sent,sender from chat where lecturer_id = 'shizukakudo' and admin_no = '". $admin_no ."'");
$data = $result->fetch_array(MYSQLI_ASSOC);
$arrData = [
"count" => count($data)
];
$json = json_encode($arrData);
?>
我要做的是:假设它检索5条记录,我希望PHP文件只返回
[{"count":5}]
如果这是你的要求,那么使用while
循环是没有意义的。在执行查询之后,只需这样做:
// your code
$result = $conn->query("Select lecturer_id,admin_no,message,date_time_sent,sender from chat where lecturer_id = 'shizukakudo' and admin_no = '". $admin_no ."'");
$outp = array();
$outp[]['count'] = $result->num_rows;
echo json_encode($outp);
旁注:了解准备语句,因为现在您的查询容易受到SQL注入的影响。