我正在遵循一个简单的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。
var id = data[0];
var name = data[1];
ROWS 2 n 3未定义
示例var id=data[2];返回undefined等
var id=data[2];
我的问题
为什么只从第一行获取值?
我如何获取除第一个行以外的其他行的信息?
从关于Stackoverflow的其他问题中,我可能会不得不使用while循环,但是我不确定为什么或如何使用。
旧的MySQL扩展mysql已过时,请更好地使用mysqli或PDO!
mysql
mysqli
PDO
mysql_fetch_row()仅返回1行!您必须将其放入循环,例如:
mysql_fetch_row()
$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()它,因为它使您的代码更灵活,更干净。
mysql_fetch_assoc()