[英]php mysql query returns multiple rows, save data to object
我試圖從返回多行的mysql查詢中提取數據。 該代碼當前已編碼為僅處理一行。 我需要怎么做才能將多行數據保存到對象Date的實例變量中?
<?php
session_start();
require 'database.php';
class Date {
private $id = '';
private $titl = '';
private $tim = '';
private $dat = '';
private $usern = '';
}
if ($_SESSION['loginstatus']!=1){
die;
}
$username=$_SESSION['username'];
$date=$_POST['dateChosen'];
$stmt = $mysqli ->prepare("select ID, title, time from events where date=? and creator=?");
if (!$stmt){
$error = $mysqli->error;
$string="Query Prep Failed:" . $error;
echo json_encode(array(
"message"=> $string));
exit;
}
$stmt -> bind_param('ss',$date,$username);
$stmt -> execute();
$stmt ->bind_result($ID, $title,$time);
$count = 0;
while ($stmt->fetch()){
$count += 1;
echo json_encode(array("id"=>$ID,
"title"=> $title, "time"=>$time));
}
if ($count == 0){
echo json_encode(array(
"title"=> "NOT SET", "time"=>"NOT SET"));
}
$stmt->close();
header("Content-Type: application/json");
?>
您正在創建多個單獨的/獨立的JSON字符串,這是不正確的。 您需要在循環中構建一個數組,然后在循環完成后對數組ONCE進行編碼。
例如
$data = array();
while($stmt->fetch()) {
$data[] = array('id' => $ID, 'title' => etc....);
}
echo json_encode($data);
現在你正在生產
{"id":1,"title":"foo",...}{"id":2,"title":"bar",...}{etc...}
這是語法錯誤。 它應該是
[{"id":1,"title":"foo",...},{"id":2,"title":"bar",...},{etc...}]
更改while循環:
while($res = $stmt->fetch())
{
//do whatever, data is in the $res variable
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.