我试图从db中选择所有行,但它并没有将所有行返回给我。我在下面做错了什么?
$conn=mysql_connect('localhost:3307', 'root', 'usbw');
mysql_select_db('android',$conn);
mysql_set_charset('utf8',$conn);
$response=array();
$result=mysql_query("select * from news");
if(mysql_num_rows($result)>0){
while($row=mysql_fetch_array($result)){
$temp=array();
$temp["ID"]=$row["ID"];
$temp["TitrNews"]=$row["TitrNews"];
$temp["MiniMatnNews"]=$row["MiniMatnNews"];
$temp["MatnNews"]=$row["MatnNews"];
$temp["TArikh"]=$row["TArikh"];
}
$response["news"]=array();
array_push($response["news"],$temp);
$response["t"]=1;
echo json_encode($response);
}
else {
$response["t"]=0;
$response["massage"]="peyda nashod";
echo json_encode($response);
}
这段代码有问题吗?我的输出只显示我数据库的最后一行
{"news":[{"ID":"7","TitrNews":"hi","MiniMatnNews":"hello","MatnNews":":D","TArikh":"1395-09-08"}],"t":1}
答案 0 :(得分:0)
您必须声明
$response["news"]=array();
while循环的外部(即之前)。事实上,您可能也没有声明它,因为$response = array();
足以设置我们的变量(甚至可有可无?)。
现在,在添加$ temp结果之前,我们重置了结果容器,所以你只看到了最后的结果!
AND:
array_push($response["news"],$temp);
必须位于wile循环中,因为我们希望将每一行添加到最终数组中。
以下是我选择的方式:
$conn=mysql_connect('localhost:3307', 'root', 'usbw');
mysql_select_db('android',$conn);
mysql_set_charset('utf8',$conn);
$response=array();
$result=mysql_query("select * from news");
if(mysql_num_rows($result)>0){
while($row=mysql_fetch_array($result)){
$temp=array();
$temp["ID"]=$row["ID"];
$temp["TitrNews"]=$row["TitrNews"];
$temp["MiniMatnNews"]=$row["MiniMatnNews"];
$temp["MatnNews"]=$row["MatnNews"];
$temp["TArikh"]=$row["TArikh"];
// add a new element to the response["temp"] array, containing our result
$response["news"][]=$temp;
}
$response["t"]=1;
echo json_encode($response);
}
else {
$response["t"]=0;
$response["massage"]="peyda nashod";
echo json_encode($response);
}