我正在关注一个简单的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];我得到帕特.
ROWS 2 n 3未定义
示例var id = data [2];返回undefined
等等
我的问题
>为什么我只从第一行获取值?
>如何获取第一行以外的行的信息?
从Stackoverflow上的其他问题我看到我可能不得不使用while循环,但我不确定为什么或如何.
旧的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',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()
,因为它使你的代码更灵活,更清洁.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。