mirror of
https://github.com/php/php-src.git
synced 2026-04-09 17:13:31 +02:00
@@ -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);
|
||||
|
||||
34
ext/pdo_mysql/tests/bug67004.phpt
Normal file
34
ext/pdo_mysql/tests/bug67004.phpt
Normal 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"
|
||||
Reference in New Issue
Block a user