Note that there are some explanatory texts on larger screens.

plurals
  1. POPHP PDO with foreach and fetch
    primarykey
    data
    text
    <p>The following codes:</p> <pre><code>&lt;?php try { $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password); echo "Connection is successful!&lt;br/&gt;"; $sql = "SELECT * FROM users"; $users = $dbh-&gt;query($sql); foreach ($users as $row) { print $row["name"] . "-" . $row["sex"] ."&lt;br/&gt;"; } foreach ($users as $row) { print $row["name"] . "-" . $row["sex"] ."&lt;br/&gt;"; } $dbh = null; } catch (PDOexception $e) { echo "Error is: " . $e-&gt; etmessage(); } </code></pre> <p>OUTPUT:</p> <pre><code>Connection is successful! person A-male person B-female </code></pre> <p>Running "foreach" twice is not my purpose, I'm just curious why TWO "foreach" statements only output the result once?</p> <p>Following is the similar case:</p> <pre><code>&lt;?php try { $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password); echo "Connection is successful!&lt;br/&gt;"; $sql = "SELECT * FROM users"; $users = $dbh-&gt;query($sql); foreach ($users as $row) { print $row["name"] . "-" . $row["sex"] ."&lt;br/&gt;"; } echo "&lt;br/&gt;"; $result = $users-&gt;fetch(PDO::FETCH_ASSOC); foreach($result as $key =&gt; $value) { echo $key . "-" . $value . "&lt;br/&gt;"; } $dbh = null; } catch (PDOexception $e) { echo "Error is: " . $e-&gt; etmessage(); } </code></pre> <p>OUTPUT:</p> <pre><code>Connection is successful! person A-male person B-female SCREAM: Error suppression ignored for Warning: Invalid argument supplied for foreach() </code></pre> <p>But when I delete the first "foreach" from the above codes, the output will become normal:</p> <pre><code>&lt;?php try { $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password); echo "Connection is successful!&lt;br/&gt;"; $sql = "SELECT * FROM users"; $users = $dbh-&gt;query($sql); echo "&lt;br/&gt;"; $result = $users-&gt;fetch(PDO::FETCH_ASSOC); foreach($result as $key =&gt; $value) { echo $key . "-" . $value . "&lt;br/&gt;"; } $dbh = null; } catch (PDOexception $e) { echo "Error is: " . $e-&gt; etmessage(); } </code></pre> <p>OUTPUT:</p> <pre><code>Connection is successful! user_id-0000000001 name-person A sex-male </code></pre> <p>Anyone know why does this happen? I'm just a PHP beginner, thanks for your help!</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload