1
0
mirror of https://github.com/php/php-src.git synced 2026-04-09 17:13:31 +02:00

Merge branch 'PHP-8.0'

* PHP-8.0:
  Fixed bug #67004
This commit is contained in:
Nikita Popov
2020-12-11 12:56:10 +01:00
2 changed files with 37 additions and 4 deletions

View File

@@ -303,7 +303,6 @@ static int pdo_mysql_stmt_execute_prepared_mysqlnd(pdo_stmt_t *stmt) /* {{{ */
PDO_DBG_RETURN(0);
}
pdo_mysql_free_result(S);
PDO_DBG_RETURN(pdo_mysql_stmt_after_execute_prepared(stmt));
}
/* }}} */
@@ -316,14 +315,14 @@ static int pdo_mysql_stmt_execute(pdo_stmt_t *stmt) /* {{{ */
PDO_DBG_ENTER("pdo_mysql_stmt_execute");
PDO_DBG_INF_FMT("stmt=%p", S->stmt);
/* ensure that we free any previous unfetched results */
pdo_mysql_free_result(S);
S->done = 0;
if (S->stmt) {
PDO_DBG_RETURN(pdo_mysql_stmt_execute_prepared(stmt));
}
/* ensure that we free any previous unfetched results */
pdo_mysql_free_result(S);
if (mysql_real_query(H->server, stmt->active_query_string, stmt->active_query_stringlen) != 0) {
pdo_mysql_error_stmt(stmt);
PDO_DBG_RETURN(0);

View File

@@ -0,0 +1,34 @@
--TEST--
Bug #67004: Executing PDOStatement::fetch() more than once prevents releasing resultset
--SKIPIF--
<?php
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'skipif.inc');
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
MySQLPDOTest::skip();
?>
--FILE--
<?php
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
$dbh = MySQLPDOTest::factory();
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->prepare("SELECT ?");
$stmt->execute(["foo"]);
var_dump($stmt->fetchColumn(0));
$stmt->execute(["bar"]);
var_dump($stmt->fetchColumn(0));
$stmt = $dbh->prepare("SELECT ?");
$stmt->execute(["baz"]);
var_dump($stmt->fetchColumn(0));
?>
--EXPECT--
string(3) "foo"
string(3) "bar"
string(3) "baz"