PHP JSON数组不从我的phpMyAdmin返回所有行

时间:2016-08-12 16:20:28

标签: php json

我试图从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}

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);
    }