返回作为JSON友好输出获取的数组的计数


Return Count of Array Fetched as JSON friendly output

我正在编写一个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注入的影响。