I\'m following a simple ajax>php>mysql example posted here http://openenergymonitor.org/emon/node/107
I can only display information from the first row. My table is
The old MySQL extension mysql
is outdated, better use mysqli
or PDO
!
mysql_fetch_row() returns only 1 row! You have to put it into a loop, for example:
$data = array();
while ( $row = mysql_fetch_row($result) )
{
$data[] = $row;
}
echo json_encode( $data );
You also have to change the 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 />");
}
}
});
By the way I would recommend you to use mysql_fetch_assoc() because it makes your code more flexible and cleaner.
$result = mysql_query("SELECT * FROM $tableName");
$array = array(mysql_fetch_row($result));
// To store every row in the $array
while($row = mysql_fetch_row($result)) {
$array[] = $row;
}
echo json_encode($array);