我正在关注一个简单的ajax> php>这里发布的mysql示例http://openenergymonitor.org/emon/node/107
我只能显示第一行的信息。 我的表设置如此
--------------
| id | name|
--------------
| 1 | Pat |
| 2 | Joe |
| 3 | Rob |
--------------
php代码
$result = mysql_query("SELECT * FROM $tableName"); //query
$array = mysql_fetch_row($result); //fetch result
echo json_encode($array);
脚本
$(function ()
{
$.ajax({
url: 'api.php', data: "", dataType: 'json', success: function(data)
{
var id = data[0]; //get id
var vname = data[1]; //get name
$('#output').html("<b>id: </b>"+id+"<b> name: </b>"+vname);
}
});
});
第1行
如果我把var id = data[0];
我得到值1。
如果我把var name = data[1];
我得到Pat。
ROWS 2 n 3未定义
示例var id=data[2];
返回undefined
等
我的问题
为什么我只从第一行获取值?
如何获取第一行以外的行的信息?
从Stackoverflow上的其他问题我看到我可能不得不使用while循环,但我不确定为什么或如何。
答案 0 :(得分:21)
旧的MySQL扩展程序mysql
已过时,请更好地使用mysqli
或PDO
!
mysql_fetch_row()
只返回1行!
你必须将它放入循环中,例如:
$data = array();
while ( $row = mysql_fetch_row($result) )
{
$data[] = $row;
}
echo json_encode( $data );
您还必须更改JavaScript:
$.ajax({
url: 'api.php', data: "", dataType: 'json', success: function(rows)
{
for (var i in rows)
{
var row = rows[i];
var id = row[0];
var vname = row[1];
$('#output').append("<b>id: </b>"+id+"<b> name: </b>"+vname)
.append("<hr />");
}
}
});
顺便说一下,我建议您使用mysql_fetch_assoc()
,因为它可以让您的代码更灵活,更清晰。
答案 1 :(得分:0)
$ result = mysql_query(“SELECT * FROM $ tableName”); $ array = array(mysql_fetch_row($ result));
while($ row = mysql_fetch_row($ result)){$ array [] = $ row; echo json_encode($ array);