Reiterating PDO Fetch Results from the Beginning
In PHP's PDO extension, you may encounter challenges when attempting to iterate through a fetched array multiple times, starting from the first row each time. Unlike MySQL's mysql_data_seek method, PDO lacks a direct equivalent to reset the array pointer manually.
To overcome this, you can leverage an alternative approach by storing the results in an array. Here's a modified code snippet demonstrating this:
<code class="php"><?php $pdo = new PDO('mysql:host=' . $host . ';dbname='.$database, $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $pdo->prepare('SELECT * FROM mytable WHERE active = 1 ORDER BY name ASC'); $stmt->setFetchMode(PDO::FETCH_ASSOC); $stmt->execute(); // Store the results in an array $rows = $stmt->fetchAll(); // First iteration foreach ($rows as $r) { // Perform desired actions starting from the first row } // Second iteration foreach ($rows as $r) { // Perform additional actions starting from the first row again } ?></code>
By storing the results in $rows, you effectively create a snapshot of the complete result set. This allows you to iterate through the array multiple times, ensuring that each iteration starts from the first row. This approach provides greater versatility and eliminates the need for manual pointer manipulation, making it suitable for a variety of use cases.
The above is the detailed content of How to Iterate Through PDO Fetch Results Multiple Times Starting from the Beginning?. For more information, please follow other related articles on the PHP Chinese website!