diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2020-12-09 12:47:48 +0100 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2020-12-09 12:47:48 +0100 |
commit | 7eae14690f0525016cf005c7372c723506ebfd58 (patch) | |
tree | c87ac583b6a3747c15b88e8e091f66881dc77a47 /ext/pdo_mysql | |
parent | de22980ac8217c80043a48f3b24ce6b2b21379eb (diff) | |
parent | 71b5f1446e45fd4ab9255fd3287cebeceaf45be3 (diff) | |
download | php-git-7eae14690f0525016cf005c7372c723506ebfd58.tar.gz |
Merge branch 'PHP-8.0'
* PHP-8.0:
Fixed bug #78154
Diffstat (limited to 'ext/pdo_mysql')
-rw-r--r-- | ext/pdo_mysql/mysql_driver.c | 3 | ||||
-rw-r--r-- | ext/pdo_mysql/tests/bug78152.phpt | 33 |
2 files changed, 35 insertions, 1 deletions
diff --git a/ext/pdo_mysql/mysql_driver.c b/ext/pdo_mysql/mysql_driver.c index a83b12b872..410412a169 100644 --- a/ext/pdo_mysql/mysql_driver.c +++ b/ext/pdo_mysql/mysql_driver.c @@ -267,7 +267,8 @@ static zend_long mysql_handle_doer(pdo_dbh_t *dbh, const char *sql, size_t sql_l MYSQL_RES* result; while (mysql_more_results(H->server)) { if (mysql_next_result(H->server)) { - PDO_DBG_RETURN(1); + pdo_mysql_error(dbh); + PDO_DBG_RETURN(-1); } result = mysql_store_result(H->server); if (result) { diff --git a/ext/pdo_mysql/tests/bug78152.phpt b/ext/pdo_mysql/tests/bug78152.phpt new file mode 100644 index 0000000000..8fc4fc7986 --- /dev/null +++ b/ext/pdo_mysql/tests/bug78152.phpt @@ -0,0 +1,33 @@ +--TEST-- +Bug #78152: PDO::exec() - Bad error handling with multiple commands +--SKIPIF-- +<?php +require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc'); +require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc'); +MySQLPDOTest::skip(); +?> +--FILE-- +<?php + +require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc'); +$db = MySQLPDOTest::factory(); +MySQLPDOTest::createTestTable($db); + +var_dump($db->exec("INSERT INTO test(id, label) VALUES (41, 'x'); INSERT INTO test_bad(id, label) VALUES (42, 'y')")); +$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); +try { + var_dump($db->exec("INSERT INTO test(id, label) VALUES (42, 'x'); INSERT INTO test_bad(id, label) VALUES (43, 'y')")); +} catch (PDOException $e) { + echo $e->getMessage(), "\n"; +} + +?> +--CLEAN-- +<?php +require dirname(__FILE__) . '/mysql_pdo_test.inc'; +MySQLPDOTest::dropTestTable(); +?> +--EXPECTF-- +Warning: PDO::exec(): SQLSTATE[42S02]: Base table or view not found: 1146 Table '%s.test_bad' doesn't exist in %s on line %d +bool(false) +SQLSTATE[42S02]: Base table or view not found: 1146 Table '%s.test_bad' doesn't exist |