ID: 45763 User updated by: michael dot kofler at gmx dot com Reported By: michael dot kofler at gmx dot com Status: Closed Bug Type: MySQLi related Operating System: linux PHP Version: 5.3.0alpha1 Assigned To: johannes New Comment:
mysqli: works fine now, thanks! PDO: sorry for the false alarm, another query executed before was the cause Previous Comments: ------------------------------------------------------------------------ [2008-08-11 12:45:27] [EMAIL PROTECTED] This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. The MySQLi case is fixed, the PDO case works for me with emulated prepared statements. Multi Query isn't supported by MySQL when using native prepared statements. ------------------------------------------------------------------------ [2008-08-11 08:44:16] [EMAIL PROTECTED] (some debug output from my hacked php5.3 included) [EMAIL PROTECTED]:~/src/php5> sapi/cli/php -i | grep configure Configure Command => './configure' '--with-mysqli=/usr/local/mysql/bin/mysql_config' '--with-pdo-mysql=/usr/local/mysql/bin/mysql_config' [EMAIL PROTECTED]:~/src/php5> sapi/cli/php -r '$p = new PDO("mysql:host=localhost;db=test", "root", "root"); $stmt = $p->query("SELECT 1; SELECT 2; SELECT 3"); do { var_dump($stmt->fetchAll(PDO::FETCH_ASSOC)); } while ($stmt->nextRowset());' fetch_value(0) param_str array(1) { [0]=> array(1) { [1]=> string(1) "1" } } fetch_value(0) param_str array(1) { [0]=> array(1) { [2]=> string(1) "2" } } fetch_value(0) param_str array(1) { [0]=> array(1) { [3]=> string(1) "3" } } [EMAIL PROTECTED]:~/src/php5> sapi/cli/php -i | grep configure Configure Command => './configure' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' [EMAIL PROTECTED]:~/src/php5> sapi/cli/php -r '$p = new PDO("mysql:host=localhost;db=test", "root", "root"); $stmt = $p->query("SELECT 1; SELECT 2; SELECT 3"); do { var_dump($stmt->fetchAll(PDO::FETCH_ASSOC)); } while ($stmt->nextRowset());' fetch_value(0) param_str array(1) { [0]=> array(1) { [1]=> string(1) "1" } } fetch_value(0) param_str array(1) { [0]=> array(1) { [2]=> string(1) "2" } } fetch_value(0) param_str array(1) { [0]=> array(1) { [3]=> string(1) "3" } } ------------------------------------------------------------------------ [2008-08-11 07:56:21] michael dot kofler at gmx dot com also does not work with PDO: $sql = "SELECT 1; SELECT 2; SELECT 3"; $result = $conn->query($sql); do { echo "<p>----\n"; $rowset = $result->fetch(PDO::FETCH_NUM); foreach($rowset as $row) { echo "<p>$row[0]"; } } while($result->nextRowset()); Expected result (which I get with libmysql) ---- 1 ---- 2 ---- 3 Actual result (with myslqnd, apparently only the first SQL command is evaluated) ---- 1 ------------------------------------------------------------------------ [2008-08-09 07:52:08] [EMAIL PROTECTED] Hmm, I'm wrong its more tricky. More like - first execution fails, second and all after work fine. It does not matter if you use the procedural or OO interface. The test does not catch it because it first does parameter tests (e.g. mysqli_multi_query($link, "") - expected to fail) before it runs a query. And "runs a query" is the second function call. But anyway Johannes, if its not in the inner workings of mysqlnd itself, try to shield Andrey from PHP works. Ulf ------------------------------------------------------------------------ [2008-08-09 07:34:53] [EMAIL PROTECTED] Works with the procedural interface, use procedural style until fix has been committed. Re-assigning to Johannes. Andrey is busy with non-PHP work at the moment. Johannes please have a look ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/45763 -- Edit this bug report at http://bugs.php.net/?id=45763&edit=1