mirror of
https://github.com/php/php-src.git
synced 2025-01-22 11:44:09 +08:00
- Fix Bug #53782 (foreach throws irrelevant exception)
This commit is contained in:
parent
898e3095f1
commit
0179c5a0e6
@ -640,7 +640,11 @@ static int pdo_mysql_stmt_fetch(pdo_stmt_t *stmt,
|
||||
#endif /* PDO_USE_MYSQLND */
|
||||
|
||||
if ((S->current_data = mysql_fetch_row(S->result)) == NULL) {
|
||||
if (mysql_errno(S->H->server)) {
|
||||
#if PDO_USE_MYSQLND
|
||||
if (S->result->unbuf && !S->result->unbuf->eof_reached && mysql_errno(S->H->server)) {
|
||||
#else
|
||||
if (!S->result->eof && mysql_errno(S->H->server)) {
|
||||
#endif
|
||||
pdo_mysql_error_stmt(stmt);
|
||||
}
|
||||
PDO_DBG_RETURN(0);
|
||||
|
40
ext/pdo_mysql/tests/bug53782.phpt
Normal file
40
ext/pdo_mysql/tests/bug53782.phpt
Normal file
@ -0,0 +1,40 @@
|
||||
--TEST--
|
||||
PDO MySQL Bug #53782 (foreach throws irrelevant exception)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('pdo') || !extension_loaded('pdo_mysql')) die('skip not loaded');
|
||||
require dirname(__FILE__) . '/config.inc';
|
||||
require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
|
||||
PDOTest::skip();
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
require dirname(__FILE__) . '/config.inc';
|
||||
require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
|
||||
$conn = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
|
||||
|
||||
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
|
||||
$res = $conn->query('SELECT 0');
|
||||
|
||||
try {
|
||||
$conn->query('ERROR');
|
||||
} catch (PDOException $e) {
|
||||
echo "Caught: ".$e->getMessage()."\n";
|
||||
}
|
||||
|
||||
foreach ($res as $k => $v) {
|
||||
echo "Value: $v[0]\n";
|
||||
}
|
||||
|
||||
echo "DONE";
|
||||
?>
|
||||
--CLEAN--
|
||||
<?php
|
||||
require dirname(__FILE__) . '/mysql_pdo_test.inc';
|
||||
MySQLPDOTest::dropTestTable();
|
||||
?>
|
||||
--EXPECTF--
|
||||
Caught: SQLSTATE[42000]: %s
|
||||
Value: 0
|
||||
DONE
|
Loading…
Reference in New Issue
Block a user