我正在关注一个简单的ajax> PHP>这里发布的
mysql示例
http://openenergymonitor.org/emon/node/107
我只能显示第一行的信息.
我的桌子是这样设置的
-------------- | id | name| -------------- | 1 | Pat | | 2 | Joe | | 3 | Rob | --------------
$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];我得到帕特.
ROWS 2 n 3未定义
示例var id = data [2];返回undefined
等等
我的问题
>为什么我只从第一行获取值?
>如何获取第一行以外的行的信息?
从Stackoverflow上的其他问题我看到我可能不得不使用while循环,但我不确定为什么或如何.
旧的MysqL扩展MysqL已经过时了,最好使用MysqLi或PDO!
原文链接:https://www.f2er.com/php/135597.htmlmysql_fetch_row()
只返回1行!
你必须把它放到一个循环中,例如:
$data = array(); while ( $row = MysqL_fetch_row($result) ) { $data[] = $row; } echo json_encode( $data );
您还必须更改JavaScript:
$.ajax({ url: 'api.PHP',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()
,因为它使你的代码更灵活,更清洁.