mirror of
https://github.com/php/php-src.git
synced 2024-10-17 14:32:37 +00:00
d3b653e97b
proto bool PDOStatement::closeCursor() Closes the cursor, leaving the statement ready for re-execution. The purpose of the function is to free up the connection to the server so that other queries may be issued, but leaving the statement in a state that it can be re-executed. This is implemented either as an optional driver specific method (allowing for maximum efficiency), or as the generic PDO fallback if no driver specific function is installed. The PDO generic fallback is semantically the same as writing the following code in your PHP script: do { while ($stmt->fetch()) ; if (!$stmt->nextRowset()) break; } while (true);
57 lines
1.4 KiB
PHP
57 lines
1.4 KiB
PHP
--TEST--
|
|
PDO Common: PDOStatement::execute with parameters
|
|
--SKIPIF--
|
|
<?php # vim:ft=php
|
|
if (!extension_loaded('pdo')) die('skip');
|
|
$dir = getenv('REDIR_TEST_DIR');
|
|
if (false == $dir) die('skip no driver');
|
|
require_once $dir . 'pdo_test.inc';
|
|
PDOTest::skip();
|
|
?>
|
|
--FILE--
|
|
<?php
|
|
require getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
|
|
$db = PDOTest::factory();
|
|
|
|
$db->exec('CREATE TABLE test(id INT NOT NULL PRIMARY KEY, val VARCHAR(10), val2 VARCHAR(16))');
|
|
|
|
$select = $db->prepare('SELECT COUNT(id) FROM test');
|
|
|
|
$data = array(
|
|
array('10', 'Abc', 'zxy'),
|
|
array('20', 'Def', 'wvu'),
|
|
array('30', 'Ghi', 'tsr'),
|
|
array('40', 'Jkl', 'qpo'),
|
|
array('50', 'Mno', 'nml'),
|
|
array('60', 'Pqr', 'kji'),
|
|
);
|
|
|
|
|
|
// Insert using question mark placeholders
|
|
$stmt = $db->prepare("INSERT INTO test VALUES(?, ?, ?)");
|
|
foreach ($data as $row) {
|
|
$stmt->execute($row);
|
|
}
|
|
$select->execute();
|
|
$num = $select->fetchColumn();
|
|
echo 'There are ' . $num . " rows in the table.\n";
|
|
|
|
$select->closeCursor();
|
|
|
|
// Insert using named parameters
|
|
$stmt2 = $db->prepare("INSERT INTO test VALUES(:first, :second, :third)");
|
|
foreach ($data as $row) {
|
|
$stmt2->execute(array(':first'=>($row[0] + 5), ':second'=>$row[1],
|
|
':third'=>$row[2]));
|
|
}
|
|
|
|
$select->execute();
|
|
$num = $select->fetchColumn();
|
|
echo 'There are ' . $num . " rows in the table.\n";
|
|
|
|
|
|
?>
|
|
--EXPECT--
|
|
There are 6 rows in the table.
|
|
There are 12 rows in the table.
|