我想从MySQL表中检索一组记录作为数组。
到目前为止,我能够将每一行检索为关联数组。但是我想要一个数组中的所有行,因为我必须在jQuery中访问该完整对象才能显示它们。
这是我到目前为止所做的。这是我的.php脚本来检索数据
//select query
$result = mysql_query("SELECT * FROM student",$con) or die (mysql_error());
$numRows = mysql_num_rows($result); //to iterate the for loop
//passing as an associative array
for ($count = 0; $count < $numRows; $count++){
$row = mysql_fetch_array($result, MYSQL_ASSOC);
echo json_encode($row);
}
这是我目前得到的
{"StuId":"1","fName":"Saman","lName":"Kumara","age":"14","grade":"A"}
{"StuId":"2","fName":"Marry","lName":"Vass","age":"12","grade":"B"}
{"StuId":"3","fName":"Navjoth","lName":"Bogal","age":"32","grade":"A"}
{"StuId":"4","fName":"Jassu","lName":"Singh","age":"22","grade":"E"}
但是我希望这个结果集如下。
[
{"TEST1":45,"TEST2":23,"TEST3":"DATA1"},
{"TEST1":46,"TEST2":24,"TEST3":"DATA2"},
{"TEST1":47,"TEST2":25,"TEST3":"DATA3"}
]
我在这方面寻求帮助。提前谢谢。
答案 0 :(得分:6)
将所有内容放在一个数组中,然后json_encode:
$json = array( );
$result = mysql_query("SELECT * FROM student",$con) or die (mysql_error());
while( $row = mysql_fetch_assoc( $result ) ) {
$json[] = $row;
}
echo json_encode( $json );
仅供参考:没有必要计算要循环的结果数。 mysql_fetch_ *将在内部保留一个指向当前记录的指针,并在每次调用时递增该指针。这使它成为在简单的while循环中使用的完美候选者。另外,代替mysql_fetch_array并传递MYSQL_ASSOC,你可以简单地使用mysql_fetch_assoc,这是我更喜欢的方法。使代码更容易阅读(在我看来,无论如何)。