TeroYukio Posted August 13, 2012 Share Posted August 13, 2012 This is my code: <?php include('header.php'); $sql = mysql_query("SELECT * FROM users")or die(mysql_error()); $rows = mysql_fetch_array($sql); foreach($rows as $row){ echo "$row[id]"; echo "<br>"; } mysql_close(); ?> This is what it displays: 5 5 2 2 In my database currently there are three "id"s: 5, 6, and 7. What is going on? Link to comment https://forums.phpfreaks.com/topic/266999-help-why-is-my-foreach-displaying/ Share on other sites More sharing options...
requinix Posted August 13, 2012 Share Posted August 13, 2012 $rows is just one row from the result, not all of them. All you're looping over is the columns in that row. And actually your $sql variable is named a bit off too: it's the results of the query, not the SQL itself. Try this structure: while($row = mysql_fetch_array($sql)) { echo $row["id"], " "; } Link to comment https://forums.phpfreaks.com/topic/266999-help-why-is-my-foreach-displaying/#findComment-1368909 Share on other sites More sharing options...
TeroYukio Posted August 13, 2012 Author Share Posted August 13, 2012 Thanks, works as intended: <?php include('header.php'); $sql = ("SELECT * FROM users ORDER BY id") or die(mysql_error()); $res = mysql_query($sql); while($rows = mysql_fetch_array($res)){ echo "$rows[id]"; echo "<br>"; } mysql_close(); ?> Displays: 5 6 7 Link to comment https://forums.phpfreaks.com/topic/266999-help-why-is-my-foreach-displaying/#findComment-1368910 Share on other sites More sharing options...
Christian F. Posted August 13, 2012 Share Posted August 13, 2012 You're still using the wrong syntax to reference a array index, read requinix' code again. A bit more closely this time. Also, the mysql_* () line of functions are deprecated, and as such you'll need to use MySQLi or PDO instead. Link to comment https://forums.phpfreaks.com/topic/266999-help-why-is-my-foreach-displaying/#findComment-1369001 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.