summaryrefslogtreecommitdiff
path: root/ext/pdo_mysql
diff options
context:
space:
mode:
Diffstat (limited to 'ext/pdo_mysql')
-rw-r--r--ext/pdo_mysql/tests/bug41125.phpt62
-rw-r--r--ext/pdo_mysql/tests/bug44327.phpt48
-rw-r--r--ext/pdo_mysql/tests/bug46292.phpt54
-rw-r--r--ext/pdo_mysql/tests/bug54929.phpt14
-rw-r--r--ext/pdo_mysql/tests/bug63176.phpt22
-rw-r--r--ext/pdo_mysql/tests/bug68371.phpt86
-rw-r--r--ext/pdo_mysql/tests/bug70389.phpt6
-rw-r--r--ext/pdo_mysql/tests/bug70862.phpt38
-rw-r--r--ext/pdo_mysql/tests/bug75177.phpt2
-rw-r--r--ext/pdo_mysql/tests/bug_33689.phpt6
-rw-r--r--ext/pdo_mysql/tests/bug_38546.phpt64
-rw-r--r--ext/pdo_mysql/tests/bug_39858.phpt42
-rw-r--r--ext/pdo_mysql/tests/bug_41125.phpt2
-rw-r--r--ext/pdo_mysql/tests/bug_41997.phpt2
-rw-r--r--ext/pdo_mysql/tests/bug_42499.phpt16
-rw-r--r--ext/pdo_mysql/tests/bug_44454.phpt64
-rw-r--r--ext/pdo_mysql/tests/bug_44707.phpt40
-rw-r--r--ext/pdo_mysql/tests/bug_45120.phpt22
-rw-r--r--ext/pdo_mysql/tests/bug_61207.phpt24
-rw-r--r--ext/pdo_mysql/tests/bug_61411.phpt6
-rw-r--r--ext/pdo_mysql/tests/bug_pecl_12925.phpt22
-rw-r--r--ext/pdo_mysql/tests/bug_pecl_7976.phpt16
-rw-r--r--ext/pdo_mysql/tests/config.inc52
-rw-r--r--ext/pdo_mysql/tests/mysql_pdo_test.inc336
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql___construct.phpt566
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql___construct_ini.phpt74
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql___construct_options.phpt304
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql___construct_options_libmysql.phpt104
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql___construct_uri.phpt106
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_attr_autocommit.phpt120
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_attr_case.phpt112
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_attr_client_version.phpt32
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_attr_connection_status.phpt22
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_attr_driver_name.phpt22
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_attr_errmode.phpt294
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_attr_fetch_table_names.phpt24
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_attr_init_command.phpt34
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_attr_max_buffer_size.phpt82
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_attr_multi_statements.phpt56
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_attr_oracle_nulls.phpt120
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_attr_prefetch.phpt10
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_attr_server_info.phpt76
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_attr_server_version.phpt88
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_attr_statement_class.phpt188
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_begintransaction.phpt246
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_bit.phpt58
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_class_constants.phpt150
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_commit.phpt110
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_connect_charset.phpt30
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_errorcode.phpt108
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_errorinfo.phpt172
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_exec.phpt326
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_exec_ddl.phpt114
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_exec_load_data.phpt158
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_exec_select.phpt70
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_fetch_both.phpt68
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_get_attribute.phpt104
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_interface.phpt80
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_last_insert_id.phpt200
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_multi_stmt_nextrowset.phpt96
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_param_str_natl.phpt2
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_pconnect.phpt172
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_phpinfo.phpt24
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_prepare_emulated.phpt612
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_prepare_emulated_anonymous.phpt78
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_prepare_emulated_placeholder_everywhere.phpt74
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_prepare_load_data.phpt166
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_prepare_match_against.phpt40
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_prepare_native.phpt628
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_prepare_native_clear_error.phpt92
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_prepare_native_column.phpt26
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_prepare_native_dup_named_placeholder.phpt168
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_prepare_native_mixed_style.phpt26
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_prepare_native_named_placeholder.phpt90
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_prepare_native_placeholder_everywhere.phpt84
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_rollback.phpt112
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_bindcolumn.phpt154
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_bindparam.phpt214
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_bindparam_types.phpt308
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_bindvalue.phpt570
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_blobfromsteam.phpt212
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_blobs.phpt130
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_closecursor.phpt268
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_closecursor_empty.phpt78
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_columncount.phpt68
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_errorcode.phpt56
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_errorinfo.phpt82
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_fetch_non_select.phpt346
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_fetch_serialize.phpt204
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_fetch_serialize_simple.phpt90
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_fetchobject.phpt72
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_getcolumnmeta.phpt528
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt62
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_nextrowset.phpt128
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_rowcount.phpt26
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_unbuffered_2050.phpt196
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_variable_columncount.phpt198
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_subclass.phpt92
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_types.phpt276
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_types_zerofill.phpt218
-rw-r--r--ext/pdo_mysql/tests/pecl_bug_5200.phpt2
-rw-r--r--ext/pdo_mysql/tests/skipif.inc2
-rw-r--r--ext/pdo_mysql/tests/table.inc4
103 files changed, 6274 insertions, 6274 deletions
diff --git a/ext/pdo_mysql/tests/bug41125.phpt b/ext/pdo_mysql/tests/bug41125.phpt
index 2212bb621d..63ff7df2f3 100644
--- a/ext/pdo_mysql/tests/bug41125.phpt
+++ b/ext/pdo_mysql/tests/bug41125.phpt
@@ -24,19 +24,19 @@ print implode(' - ', $stmt->errorinfo()) ."\n";
print "-------------------------------------------------------\n";
$queries = array(
- "SELECT 1 FROM DUAL WHERE 1 = '?\'\''",
- "SELECT 'a\\'0' FROM DUAL WHERE 1 = ?",
- "SELECT 'a', 'b\'' FROM DUAL WHERE '''' LIKE '\\'' AND ?",
- "SELECT 'foo?bar', '', '''' FROM DUAL WHERE ?"
+ "SELECT 1 FROM DUAL WHERE 1 = '?\'\''",
+ "SELECT 'a\\'0' FROM DUAL WHERE 1 = ?",
+ "SELECT 'a', 'b\'' FROM DUAL WHERE '''' LIKE '\\'' AND ?",
+ "SELECT 'foo?bar', '', '''' FROM DUAL WHERE ?"
);
foreach ($queries as $k => $query) {
- $stmt = $db->prepare($query);
- $stmt->execute(array(1));
- printf("[%d] Query: [[%s]]\n", $k + 1, $query);
- print implode(' - ', (($r = @$stmt->fetch(PDO::FETCH_NUM)) ? $r : array())) ."\n";
- print implode(' - ', $stmt->errorinfo()) ."\n";
- print "--------\n";
+ $stmt = $db->prepare($query);
+ $stmt->execute(array(1));
+ printf("[%d] Query: [[%s]]\n", $k + 1, $query);
+ print implode(' - ', (($r = @$stmt->fetch(PDO::FETCH_NUM)) ? $r : array())) ."\n";
+ print implode(' - ', $stmt->errorinfo()) ."\n";
+ print "--------\n";
}
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
@@ -53,33 +53,33 @@ print implode(' - ', $stmt->errorinfo()) ."\n";
print "-------------------------------------------------------\n";
$queries = array(
- "SELECT 1, 'foo' FROM DUAL WHERE 1 = :id AND '\\0' IS NULL AND 2 <> :id",
- "SELECT 1 FROM DUAL WHERE 1 = :id AND '' AND 2 <> :id",
- "SELECT 1 FROM DUAL WHERE 1 = :id AND '\'\'' = '''' AND 2 <> :id",
- "SELECT 1 FROM DUAL WHERE 1 = :id AND '\'' = '''' AND 2 <> :id",
- "SELECT 'a', 'b\'' FROM DUAL WHERE '''' LIKE '\\'' AND 1",
- "SELECT 'a''', '\'b\'' FROM DUAL WHERE '''' LIKE '\\'' AND 1",
- "SELECT UPPER(:id) FROM DUAL WHERE '1'",
- "SELECT 1 FROM DUAL WHERE '\''",
- "SELECT 1 FROM DUAL WHERE :id AND '\\0' OR :id",
- "SELECT 1 FROM DUAL WHERE 'a\\f\\n\\0' AND 1 >= :id",
- "SELECT 1 FROM DUAL WHERE '\'' = ''''",
- "SELECT '\\n' '1 FROM DUAL WHERE '''' and :id'",
- "SELECT 1 'FROM DUAL WHERE :id AND '''' = '''' OR 1 = 1 AND ':id",
+ "SELECT 1, 'foo' FROM DUAL WHERE 1 = :id AND '\\0' IS NULL AND 2 <> :id",
+ "SELECT 1 FROM DUAL WHERE 1 = :id AND '' AND 2 <> :id",
+ "SELECT 1 FROM DUAL WHERE 1 = :id AND '\'\'' = '''' AND 2 <> :id",
+ "SELECT 1 FROM DUAL WHERE 1 = :id AND '\'' = '''' AND 2 <> :id",
+ "SELECT 'a', 'b\'' FROM DUAL WHERE '''' LIKE '\\'' AND 1",
+ "SELECT 'a''', '\'b\'' FROM DUAL WHERE '''' LIKE '\\'' AND 1",
+ "SELECT UPPER(:id) FROM DUAL WHERE '1'",
+ "SELECT 1 FROM DUAL WHERE '\''",
+ "SELECT 1 FROM DUAL WHERE :id AND '\\0' OR :id",
+ "SELECT 1 FROM DUAL WHERE 'a\\f\\n\\0' AND 1 >= :id",
+ "SELECT 1 FROM DUAL WHERE '\'' = ''''",
+ "SELECT '\\n' '1 FROM DUAL WHERE '''' and :id'",
+ "SELECT 1 'FROM DUAL WHERE :id AND '''' = '''' OR 1 = 1 AND ':id",
);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
$id = 1;
foreach ($queries as $k => $query) {
- $stmt = $db->prepare($query);
- $stmt->bindParam(':id', $id);
- $stmt->execute();
-
- printf("[%d] Query: [[%s]]\n", $k + 1, $query);
- print implode(' - ', (($r = @$stmt->fetch(PDO::FETCH_NUM)) ? $r : array())) ."\n";
- print implode(' - ', $stmt->errorinfo()) ."\n";
- print "--------\n";
+ $stmt = $db->prepare($query);
+ $stmt->bindParam(':id', $id);
+ $stmt->execute();
+
+ printf("[%d] Query: [[%s]]\n", $k + 1, $query);
+ print implode(' - ', (($r = @$stmt->fetch(PDO::FETCH_NUM)) ? $r : array())) ."\n";
+ print implode(' - ', $stmt->errorinfo()) ."\n";
+ print "--------\n";
}
?>
diff --git a/ext/pdo_mysql/tests/bug44327.phpt b/ext/pdo_mysql/tests/bug44327.phpt
index f457c97aeb..5adc8209e7 100644
--- a/ext/pdo_mysql/tests/bug44327.phpt
+++ b/ext/pdo_mysql/tests/bug44327.phpt
@@ -9,35 +9,35 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- $stmt = $db->prepare("SELECT 1 AS \"one\"");
- $stmt->execute();
- $row = $stmt->fetch(PDO::FETCH_LAZY);
- var_dump($row);
- var_dump($row->{0});
- var_dump($row->one);
- var_dump($row->queryString);
+ $stmt = $db->prepare("SELECT 1 AS \"one\"");
+ $stmt->execute();
+ $row = $stmt->fetch(PDO::FETCH_LAZY);
+ var_dump($row);
+ var_dump($row->{0});
+ var_dump($row->one);
+ var_dump($row->queryString);
- print "----------------------------------\n";
+ print "----------------------------------\n";
- @$db->exec("DROP TABLE test");
- $db->exec("CREATE TABLE test (id INT)");
- $db->exec("INSERT INTO test(id) VALUES (1)");
- $stmt = $db->prepare("SELECT id FROM test");
- $stmt->execute();
- $row = $stmt->fetch(PDO::FETCH_LAZY);
- var_dump($row);
- var_dump($row->queryString);
- @$db->exec("DROP TABLE test");
+ @$db->exec("DROP TABLE test");
+ $db->exec("CREATE TABLE test (id INT)");
+ $db->exec("INSERT INTO test(id) VALUES (1)");
+ $stmt = $db->prepare("SELECT id FROM test");
+ $stmt->execute();
+ $row = $stmt->fetch(PDO::FETCH_LAZY);
+ var_dump($row);
+ var_dump($row->queryString);
+ @$db->exec("DROP TABLE test");
- print "----------------------------------\n";
+ print "----------------------------------\n";
- $stmt = $db->prepare('foo');
- @$stmt->execute();
- $row = $stmt->fetch();
- var_dump($row->queryString);
+ $stmt = $db->prepare('foo');
+ @$stmt->execute();
+ $row = $stmt->fetch();
+ var_dump($row->queryString);
?>
--EXPECTF--
diff --git a/ext/pdo_mysql/tests/bug46292.phpt b/ext/pdo_mysql/tests/bug46292.phpt
index fd2ef759e5..dec4a9f550 100644
--- a/ext/pdo_mysql/tests/bug46292.phpt
+++ b/ext/pdo_mysql/tests/bug46292.phpt
@@ -9,45 +9,45 @@ MySQLPDOTest::skip();
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $pdoDb = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $pdoDb = MySQLPDOTest::factory();
- class myclass implements Serializable {
- public function __construct() {
- printf("%s()\n", __METHOD__);
- }
+ class myclass implements Serializable {
+ public function __construct() {
+ printf("%s()\n", __METHOD__);
+ }
- public function serialize() {
- printf("%s()\n", __METHOD__);
- return "any data from serialize()";
- }
+ public function serialize() {
+ printf("%s()\n", __METHOD__);
+ return "any data from serialize()";
+ }
- public function unserialize($dat) {
- printf("%s(%s)\n", __METHOD__, var_export($dat, true));
- return $dat;
- }
- }
+ public function unserialize($dat) {
+ printf("%s(%s)\n", __METHOD__, var_export($dat, true));
+ return $dat;
+ }
+ }
- class myclass2 extends myclass { }
+ class myclass2 extends myclass { }
- $pdoDb->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
- $pdoDb->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
+ $pdoDb->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
+ $pdoDb->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
- $pdoDb->query('DROP TABLE IF EXISTS testz');
+ $pdoDb->query('DROP TABLE IF EXISTS testz');
- $pdoDb->query('CREATE TABLE testz (name VARCHAR(20) NOT NULL, value INT)');
+ $pdoDb->query('CREATE TABLE testz (name VARCHAR(20) NOT NULL, value INT)');
- $pdoDb->query("INSERT INTO testz VALUES ('myclass', 1), ('myclass2', 2), ('myclass', NULL), ('myclass3', NULL)");
+ $pdoDb->query("INSERT INTO testz VALUES ('myclass', 1), ('myclass2', 2), ('myclass', NULL), ('myclass3', NULL)");
- $stmt = $pdoDb->prepare("SELECT * FROM testz");
+ $stmt = $pdoDb->prepare("SELECT * FROM testz");
- var_dump($stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE | PDO::FETCH_GROUP));
- $stmt->execute();
+ var_dump($stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE | PDO::FETCH_GROUP));
+ $stmt->execute();
- var_dump($stmt->fetch());
- var_dump($stmt->fetch());
- var_dump($stmt->fetchAll());
+ var_dump($stmt->fetch());
+ var_dump($stmt->fetch());
+ var_dump($stmt->fetchAll());
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/bug54929.phpt b/ext/pdo_mysql/tests/bug54929.phpt
index 6f2c2b0b80..c9f68af862 100644
--- a/ext/pdo_mysql/tests/bug54929.phpt
+++ b/ext/pdo_mysql/tests/bug54929.phpt
@@ -16,14 +16,14 @@ $pdodb = PDOTest::test_factory(__DIR__ . '/common.phpt');
function testQuery($query) {
- global $pdodb;
- $stmt = $pdodb->prepare($query);
+ global $pdodb;
+ $stmt = $pdodb->prepare($query);
- if (!$stmt->execute(array("foo"))) {
- var_dump($stmt->errorInfo());
- } else{
- var_dump($stmt->fetch(PDO::FETCH_ASSOC));
- }
+ if (!$stmt->execute(array("foo"))) {
+ var_dump($stmt->errorInfo());
+ } else{
+ var_dump($stmt->fetch(PDO::FETCH_ASSOC));
+ }
}
testQuery("/* ' */ select ? as f1 /* ' */");
diff --git a/ext/pdo_mysql/tests/bug63176.phpt b/ext/pdo_mysql/tests/bug63176.phpt
index ed462c0c53..2a75f47384 100644
--- a/ext/pdo_mysql/tests/bug63176.phpt
+++ b/ext/pdo_mysql/tests/bug63176.phpt
@@ -10,24 +10,24 @@ MySQLPDOTest::skip();
<?php
require(__DIR__. DIRECTORY_SEPARATOR . 'config.inc');
class PDO2 extends PDO {
- protected $transLevel;
+ protected $transLevel;
}
class PDO3 extends PDO {
- protected $tomato;
+ protected $tomato;
}
class ModelA {
- public function __construct($h) {
- var_dump($h);
- if ($h) {
- $this->db = new PDO2(PDO_MYSQL_TEST_DSN, PDO_MYSQL_TEST_USER, PDO_MYSQL_TEST_PASS, array(PDO::ATTR_PERSISTENT => true));
- } else {
- $this->db = new PDO3(PDO_MYSQL_TEST_DSN, PDO_MYSQL_TEST_USER, PDO_MYSQL_TEST_PASS, array(PDO::ATTR_PERSISTENT => true));
- }
- $this->db->query('SELECT 1')->fetchAll();
- }
+ public function __construct($h) {
+ var_dump($h);
+ if ($h) {
+ $this->db = new PDO2(PDO_MYSQL_TEST_DSN, PDO_MYSQL_TEST_USER, PDO_MYSQL_TEST_PASS, array(PDO::ATTR_PERSISTENT => true));
+ } else {
+ $this->db = new PDO3(PDO_MYSQL_TEST_DSN, PDO_MYSQL_TEST_USER, PDO_MYSQL_TEST_PASS, array(PDO::ATTR_PERSISTENT => true));
+ }
+ $this->db->query('SELECT 1')->fetchAll();
+ }
}
$a = new ModelA(true);
diff --git a/ext/pdo_mysql/tests/bug68371.phpt b/ext/pdo_mysql/tests/bug68371.phpt
index f5046f0375..17eee8c2f4 100644
--- a/ext/pdo_mysql/tests/bug68371.phpt
+++ b/ext/pdo_mysql/tests/bug68371.phpt
@@ -14,54 +14,54 @@ $pdo->setAttribute (\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$attrs = array(
// Extensive test: default value and set+get values
- PDO::ATTR_EMULATE_PREPARES => array(null, 1, 0),
- PDO::MYSQL_ATTR_DIRECT_QUERY => array(null, 0, 1),
- PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => array(null, 0, 1),
+ PDO::ATTR_EMULATE_PREPARES => array(null, 1, 0),
+ PDO::MYSQL_ATTR_DIRECT_QUERY => array(null, 0, 1),
+ PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => array(null, 0, 1),
// Just test the default
- PDO::ATTR_AUTOCOMMIT => array(null),
- PDO::ATTR_PREFETCH => array(null),
- PDO::ATTR_TIMEOUT => array(null),
- PDO::ATTR_ERRMODE => array(null),
- PDO::ATTR_SERVER_VERSION => array(null),
- PDO::ATTR_CLIENT_VERSION => array(null),
- PDO::ATTR_SERVER_INFO => array(null),
- PDO::ATTR_CONNECTION_STATUS => array(null),
- PDO::ATTR_CASE => array(null),
- PDO::ATTR_CURSOR_NAME => array(null),
- PDO::ATTR_CURSOR => array(null),
- PDO::ATTR_ORACLE_NULLS => array(null),
- PDO::ATTR_PERSISTENT => array(null),
- PDO::ATTR_STATEMENT_CLASS => array(null),
- PDO::ATTR_FETCH_TABLE_NAMES => array(null),
- PDO::ATTR_FETCH_CATALOG_NAMES => array(null),
- PDO::ATTR_DRIVER_NAME => array(null),
- PDO::ATTR_STRINGIFY_FETCHES => array(null),
- PDO::ATTR_MAX_COLUMN_LEN => array(null),
- PDO::ATTR_DEFAULT_FETCH_MODE => array(null),
+ PDO::ATTR_AUTOCOMMIT => array(null),
+ PDO::ATTR_PREFETCH => array(null),
+ PDO::ATTR_TIMEOUT => array(null),
+ PDO::ATTR_ERRMODE => array(null),
+ PDO::ATTR_SERVER_VERSION => array(null),
+ PDO::ATTR_CLIENT_VERSION => array(null),
+ PDO::ATTR_SERVER_INFO => array(null),
+ PDO::ATTR_CONNECTION_STATUS => array(null),
+ PDO::ATTR_CASE => array(null),
+ PDO::ATTR_CURSOR_NAME => array(null),
+ PDO::ATTR_CURSOR => array(null),
+ PDO::ATTR_ORACLE_NULLS => array(null),
+ PDO::ATTR_PERSISTENT => array(null),
+ PDO::ATTR_STATEMENT_CLASS => array(null),
+ PDO::ATTR_FETCH_TABLE_NAMES => array(null),
+ PDO::ATTR_FETCH_CATALOG_NAMES => array(null),
+ PDO::ATTR_DRIVER_NAME => array(null),
+ PDO::ATTR_STRINGIFY_FETCHES => array(null),
+ PDO::ATTR_MAX_COLUMN_LEN => array(null),
+ PDO::ATTR_DEFAULT_FETCH_MODE => array(null),
);
foreach ($attrs as $a => $vals) {
- foreach ($vals as $v) {
- try {
- if (!isset($v)) {
- var_dump($pdo->getAttribute($a));
- } else {
- $pdo->setAttribute($a, $v);
- if ($pdo->getAttribute($a) === $v) {
- echo "OK\n";
- } else {
- throw new \Exception('KO');
- }
- }
- } catch (\Exception $e) {
- if ($e->getCode() == 'IM001') {
- echo "ERR\n";
- } else {
- echo "ERR {$e->getMessage()}\n";
- }
- }
- }
+ foreach ($vals as $v) {
+ try {
+ if (!isset($v)) {
+ var_dump($pdo->getAttribute($a));
+ } else {
+ $pdo->setAttribute($a, $v);
+ if ($pdo->getAttribute($a) === $v) {
+ echo "OK\n";
+ } else {
+ throw new \Exception('KO');
+ }
+ }
+ } catch (\Exception $e) {
+ if ($e->getCode() == 'IM001') {
+ echo "ERR\n";
+ } else {
+ echo "ERR {$e->getMessage()}\n";
+ }
+ }
+ }
}
?>
diff --git a/ext/pdo_mysql/tests/bug70389.phpt b/ext/pdo_mysql/tests/bug70389.phpt
index 09f439804e..f2be259543 100644
--- a/ext/pdo_mysql/tests/bug70389.phpt
+++ b/ext/pdo_mysql/tests/bug70389.phpt
@@ -10,9 +10,9 @@ MySQLPDOTest::skip();
<?php
require(__DIR__. DIRECTORY_SEPARATOR . 'config.inc');
$flags = [
- PDO::MYSQL_ATTR_FOUND_ROWS => true,
- PDO::MYSQL_ATTR_LOCAL_INFILE => true,
- PDO::ATTR_PERSISTENT => true,
+ PDO::MYSQL_ATTR_FOUND_ROWS => true,
+ PDO::MYSQL_ATTR_LOCAL_INFILE => true,
+ PDO::ATTR_PERSISTENT => true,
];
$std = new StdClass();
diff --git a/ext/pdo_mysql/tests/bug70862.phpt b/ext/pdo_mysql/tests/bug70862.phpt
index d54d19f17b..fee79cbebb 100644
--- a/ext/pdo_mysql/tests/bug70862.phpt
+++ b/ext/pdo_mysql/tests/bug70862.phpt
@@ -8,32 +8,32 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- $db->exec('DROP TABLE IF EXISTS test');
- $db->exec(sprintf('CREATE TABLE test(id INT, label BLOB)'));
+ $db->exec('DROP TABLE IF EXISTS test');
+ $db->exec(sprintf('CREATE TABLE test(id INT, label BLOB)'));
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
- $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
+ $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
- class HelloWrapper {
- public function stream_open() { return true; }
- public function stream_eof() { return true; }
- public function stream_read() { return NULL; }
- public function stream_stat() { return array(); }
- }
- stream_wrapper_register("hello", "HelloWrapper");
+ class HelloWrapper {
+ public function stream_open() { return true; }
+ public function stream_eof() { return true; }
+ public function stream_read() { return NULL; }
+ public function stream_stat() { return array(); }
+ }
+ stream_wrapper_register("hello", "HelloWrapper");
- $f = fopen("hello://there", "r");
+ $f = fopen("hello://there", "r");
- $stmt = $db->prepare('INSERT INTO test(id, label) VALUES (1, :para)');
- $stmt->bindParam(":para", $f, PDO::PARAM_LOB);
- $stmt->execute();
+ $stmt = $db->prepare('INSERT INTO test(id, label) VALUES (1, :para)');
+ $stmt->bindParam(":para", $f, PDO::PARAM_LOB);
+ $stmt->execute();
- var_dump($f);
+ var_dump($f);
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/bug75177.phpt b/ext/pdo_mysql/tests/bug75177.phpt
index 4f2adaf778..f6414f0b29 100644
--- a/ext/pdo_mysql/tests/bug75177.phpt
+++ b/ext/pdo_mysql/tests/bug75177.phpt
@@ -21,7 +21,7 @@ $pdo->query("INSERT INTO $tbl (`bit`) VALUES (0b01100)");
$ret = $pdo->query("SELECT * FROM $tbl")->fetchAll();
foreach ($ret as $i) {
- var_dump($i["bit"]);
+ var_dump($i["bit"]);
}
?>
diff --git a/ext/pdo_mysql/tests/bug_33689.phpt b/ext/pdo_mysql/tests/bug_33689.phpt
index 0755112f5f..84b8f5b914 100644
--- a/ext/pdo_mysql/tests/bug_33689.phpt
+++ b/ext/pdo_mysql/tests/bug_33689.phpt
@@ -18,7 +18,7 @@ $db->exec('INSERT INTO test VALUES(1)');
var_dump($db->query('SELECT * from test'));
foreach ($db->query('SELECT * from test') as $row) {
- print_r($row);
+ print_r($row);
}
$stmt = $db->prepare('SELECT * from test');
@@ -28,9 +28,9 @@ $tmp = $stmt->getColumnMeta(0);
// libmysql and mysqlnd will show the pdo_type entry at a different position in the hash
if (!isset($tmp['pdo_type']) || (isset($tmp['pdo_type']) && $tmp['pdo_type'] != 2))
- printf("Expecting pdo_type = 2 got %s\n", $tmp['pdo_type']);
+ printf("Expecting pdo_type = 2 got %s\n", $tmp['pdo_type']);
else
- unset($tmp['pdo_type']);
+ unset($tmp['pdo_type']);
print_r($tmp);
?>
diff --git a/ext/pdo_mysql/tests/bug_38546.phpt b/ext/pdo_mysql/tests/bug_38546.phpt
index 0d7b44d1dc..238bccb035 100644
--- a/ext/pdo_mysql/tests/bug_38546.phpt
+++ b/ext/pdo_mysql/tests/bug_38546.phpt
@@ -21,20 +21,20 @@ $db->exec("SET sql_mode='STRICT_TRANS_TABLES'");
$db->exec("DROP TABLE IF EXISTS test");
$query = "CREATE TABLE test(
- uid MEDIUMINT UNSIGNED NOT NULL,
+ uid MEDIUMINT UNSIGNED NOT NULL,
some_bool_1 BOOL NOT NULL,
some_bool_2 BOOL NOT NULL,
some_int TINYINT NOT NULL
- )";
+ )";
$db->exec($query);
$st = $db->prepare("INSERT INTO test (uid, some_bool_1, some_bool_2, some_int) VALUES (?, ?, ?, ?)");
$values = [
- 'uid' => 6,
- 'some_bool_1' => false,
- 'some_bool_2' => true,
- 'some_int' => -23
+ 'uid' => 6,
+ 'some_bool_1' => false,
+ 'some_bool_2' => true,
+ 'some_int' => -23
];
$st->bindParam(1, $values['uid'], PDO::PARAM_INT);
$st->bindParam(2, $values['some_bool_1'], PDO::PARAM_BOOL);
@@ -50,16 +50,16 @@ if ($result === false) {
}
foreach ($db->query('SELECT * from test') as $row) {
- print_r($row);
+ print_r($row);
}
$st = $db->prepare("UPDATE test SET some_bool_1=?, some_bool_2=?, some_int=? WHERE uid=?");
$values = [
- 'uid' => 6,
- 'some_bool_1' => (bool) 1,
- 'some_bool_2' => (bool) 0,
- 'some_int' => 1,
+ 'uid' => 6,
+ 'some_bool_1' => (bool) 1,
+ 'some_bool_2' => (bool) 0,
+ 'some_int' => 1,
];
$st->bindParam(1, $values['some_bool_1'], PDO::PARAM_BOOL);
@@ -76,16 +76,16 @@ if ($result === false) {
}
foreach ($db->query('SELECT * from test') as $row) {
- print_r($row);
+ print_r($row);
}
$st = $db->prepare("UPDATE test SET some_bool_1=?, some_bool_2=?, some_int=? WHERE uid=?");
$values = [
- 'uid' => 6,
- 'some_bool_1' => (bool) 0,
- 'some_bool_2' => (bool) 1,
- 'some_int' => 2,
+ 'uid' => 6,
+ 'some_bool_1' => (bool) 0,
+ 'some_bool_2' => (bool) 1,
+ 'some_int' => 2,
];
$st->bindParam(1, $values['some_bool_1'], PDO::PARAM_BOOL);
@@ -102,17 +102,17 @@ if ($result === false) {
}
foreach ($db->query('SELECT * from test') as $row) {
- print_r($row);
+ print_r($row);
}
// String true and false should fail
$st = $db->prepare("UPDATE test SET some_bool_1=?, some_bool_2=?, some_int=? WHERE uid=?");
$values = [
- 'uid' => 6,
- 'some_bool_1' => 'true',
- 'some_bool_2' => 'false',
- 'some_int' => 3,
+ 'uid' => 6,
+ 'some_bool_1' => 'true',
+ 'some_bool_2' => 'false',
+ 'some_int' => 3,
];
$st->bindParam(1, $values['some_bool_1'], PDO::PARAM_BOOL);
@@ -129,17 +129,17 @@ if ($result === false) {
}
foreach ($db->query('SELECT * from test') as $row) {
- print_r($row);
+ print_r($row);
}
// Null should not be treated as false
$st = $db->prepare("UPDATE test SET some_bool_1=?, some_bool_2=?, some_int=? WHERE uid=?");
$values = [
- 'uid' => 6,
- 'some_bool_1' => true,
- 'some_bool_2' => null,
- 'some_int' => 4,
+ 'uid' => 6,
+ 'some_bool_1' => true,
+ 'some_bool_2' => null,
+ 'some_int' => 4,
];
$st->bindParam(1, $values['some_bool_1'], PDO::PARAM_BOOL);
@@ -156,17 +156,17 @@ if ($result === false) {
}
foreach ($db->query('SELECT * from test') as $row) {
- print_r($row);
+ print_r($row);
}
// Integers converted correctly
$st = $db->prepare("UPDATE test SET some_bool_1=?, some_bool_2=?, some_int=? WHERE uid=?");
$values = [
- 'uid' => 6,
- 'some_bool_1' => 256,
- 'some_bool_2' => 0,
- 'some_int' => 5,
+ 'uid' => 6,
+ 'some_bool_1' => 256,
+ 'some_bool_2' => 0,
+ 'some_int' => 5,
];
$st->bindParam(1, $values['some_bool_1'], PDO::PARAM_BOOL);
@@ -183,7 +183,7 @@ if ($result === false) {
}
foreach ($db->query('SELECT * from test') as $row) {
- print_r($row);
+ print_r($row);
}
?>
diff --git a/ext/pdo_mysql/tests/bug_39858.phpt b/ext/pdo_mysql/tests/bug_39858.phpt
index db8afa99b8..9328c0f20d 100644
--- a/ext/pdo_mysql/tests/bug_39858.phpt
+++ b/ext/pdo_mysql/tests/bug_39858.phpt
@@ -28,29 +28,29 @@ $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
function bug_39858($db) {
- $db->exec("DROP PROCEDURE IF EXISTS p");
- $db->exec("
- CREATE PROCEDURE p()
- NOT DETERMINISTIC
- CONTAINS SQL
- SQL SECURITY DEFINER
- COMMENT ''
- BEGIN
- SELECT 2 * 2;
- END;");
+ $db->exec("DROP PROCEDURE IF EXISTS p");
+ $db->exec("
+ CREATE PROCEDURE p()
+ NOT DETERMINISTIC
+ CONTAINS SQL
+ SQL SECURITY DEFINER
+ COMMENT ''
+ BEGIN
+ SELECT 2 * 2;
+ END;");
- $stmt = $db->prepare("CALL p()");
- $stmt->execute();
- do {
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- } while ($stmt->nextRowset());
+ $stmt = $db->prepare("CALL p()");
+ $stmt->execute();
+ do {
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ } while ($stmt->nextRowset());
- $stmt = $db->prepare("CALL p()");
- $stmt->execute();
- do {
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- } while ($stmt->nextRowset());
- $stmt->closeCursor();
+ $stmt = $db->prepare("CALL p()");
+ $stmt->execute();
+ do {
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ } while ($stmt->nextRowset());
+ $stmt->closeCursor();
}
diff --git a/ext/pdo_mysql/tests/bug_41125.phpt b/ext/pdo_mysql/tests/bug_41125.phpt
index e341ed409c..c86cad2b51 100644
--- a/ext/pdo_mysql/tests/bug_41125.phpt
+++ b/ext/pdo_mysql/tests/bug_41125.phpt
@@ -33,7 +33,7 @@ $sql = "CREATE TABLE IF NOT EXISTS test(id INT); INSERT INTO test(id) VALUES (1)
// Compare MySQL C-API documentation
$stmt = $db->query($sql);
do {
- var_dump($stmt->fetchAll());
+ var_dump($stmt->fetchAll());
} while ($stmt->nextRowset());
print "done!";
diff --git a/ext/pdo_mysql/tests/bug_41997.phpt b/ext/pdo_mysql/tests/bug_41997.phpt
index e3b52944be..def3d4406d 100644
--- a/ext/pdo_mysql/tests/bug_41997.phpt
+++ b/ext/pdo_mysql/tests/bug_41997.phpt
@@ -29,7 +29,7 @@ $db->exec('CREATE PROCEDURE p() BEGIN SELECT 1 AS "one"; END');
$stmt = $db->query("CALL p()");
do {
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
} while ($stmt->nextRowset());
var_dump($stmt->errorInfo());
diff --git a/ext/pdo_mysql/tests/bug_42499.phpt b/ext/pdo_mysql/tests/bug_42499.phpt
index 244101a7ae..4ad38eeca2 100644
--- a/ext/pdo_mysql/tests/bug_42499.phpt
+++ b/ext/pdo_mysql/tests/bug_42499.phpt
@@ -26,16 +26,16 @@ $db = MySQLPDOTest::factory();
function bug_42499($db) {
- $db->exec('DROP TABLE IF EXISTS test');
- $db->exec("CREATE TABLE test(id CHAR(1)); INSERT INTO test(id) VALUES ('a')");
+ $db->exec('DROP TABLE IF EXISTS test');
+ $db->exec("CREATE TABLE test(id CHAR(1)); INSERT INTO test(id) VALUES ('a')");
- $stmt = $db->query('SELECT id AS _id FROM test');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt = $db->query('SELECT id AS _id FROM test');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- // You must not use exec() to run statements that create a result set!
- $db->exec('SELECT id FROM test');
- // This will bail at you because you have not fetched the SELECT results: this is not a bug!
- $db->exec("INSERT INTO test(id) VALUES ('b')");
+ // You must not use exec() to run statements that create a result set!
+ $db->exec('SELECT id FROM test');
+ // This will bail at you because you have not fetched the SELECT results: this is not a bug!
+ $db->exec("INSERT INTO test(id) VALUES ('b')");
}
diff --git a/ext/pdo_mysql/tests/bug_44454.phpt b/ext/pdo_mysql/tests/bug_44454.phpt
index d21cf3a4e2..e95904dda1 100644
--- a/ext/pdo_mysql/tests/bug_44454.phpt
+++ b/ext/pdo_mysql/tests/bug_44454.phpt
@@ -15,43 +15,43 @@ $db = PDOTest::test_factory(__DIR__ . '/common.phpt');
function bug_44454($db) {
- try {
+ try {
- $db->exec('DROP TABLE IF EXISTS test');
- $db->exec('CREATE TABLE test(a INT, b INT, UNIQUE KEY idx_ab (a, b))');
- $db->exec('INSERT INTO test(a, b) VALUES (1, 1)');
+ $db->exec('DROP TABLE IF EXISTS test');
+ $db->exec('CREATE TABLE test(a INT, b INT, UNIQUE KEY idx_ab (a, b))');
+ $db->exec('INSERT INTO test(a, b) VALUES (1, 1)');
- $stmt = $db->query('SELECT a, b FROM test');
- printf("... SELECT has returned %d row...\n", $stmt->rowCount());
- while ($row = $stmt->fetch()) {
- try {
- printf("... INSERT should fail...\n");
- $db->exec('INSERT INTO test(a, b) VALUES (1, 1)');
- } catch (Exception $e) {
- printf("... STMT - %s\n", var_export($stmt->errorCode(), true));
- printf("... PDO - %s\n", var_export($db->errorInfo(), true));
- }
- }
+ $stmt = $db->query('SELECT a, b FROM test');
+ printf("... SELECT has returned %d row...\n", $stmt->rowCount());
+ while ($row = $stmt->fetch()) {
+ try {
+ printf("... INSERT should fail...\n");
+ $db->exec('INSERT INTO test(a, b) VALUES (1, 1)');
+ } catch (Exception $e) {
+ printf("... STMT - %s\n", var_export($stmt->errorCode(), true));
+ printf("... PDO - %s\n", var_export($db->errorInfo(), true));
+ }
+ }
- $db->exec('DROP TABLE IF EXISTS test');
- $db->exec('CREATE TABLE test(a INT, b INT, UNIQUE KEY idx_ab (a, b))');
- $db->exec('INSERT INTO test(a, b) VALUES (1, 1)');
+ $db->exec('DROP TABLE IF EXISTS test');
+ $db->exec('CREATE TABLE test(a INT, b INT, UNIQUE KEY idx_ab (a, b))');
+ $db->exec('INSERT INTO test(a, b) VALUES (1, 1)');
- } catch (Exception $e) {
- printf("... While error %s\n", $e->getMessage()); ;
- }
+ } catch (Exception $e) {
+ printf("... While error %s\n", $e->getMessage()); ;
+ }
- $stmt = $db->query('SELECT a, b FROM test');
- printf("... SELECT has returned %d row...\n", $stmt->rowCount());
- foreach ($stmt as $row) {
- try {
- printf("... INSERT should fail...\n");
- $db->exec('INSERT INTO test(a, b) VALUES (1, 1)');
- } catch (Exception $e) {
- printf("... STMT - %s\n", var_export($stmt->errorCode(), true));
- printf("... PDO - %s\n", var_export($db->errorInfo(), true));
- }
- }
+ $stmt = $db->query('SELECT a, b FROM test');
+ printf("... SELECT has returned %d row...\n", $stmt->rowCount());
+ foreach ($stmt as $row) {
+ try {
+ printf("... INSERT should fail...\n");
+ $db->exec('INSERT INTO test(a, b) VALUES (1, 1)');
+ } catch (Exception $e) {
+ printf("... STMT - %s\n", var_export($stmt->errorCode(), true));
+ printf("... PDO - %s\n", var_export($db->errorInfo(), true));
+ }
+ }
}
diff --git a/ext/pdo_mysql/tests/bug_44707.phpt b/ext/pdo_mysql/tests/bug_44707.phpt
index 60f4ccdfae..6bd7114431 100644
--- a/ext/pdo_mysql/tests/bug_44707.phpt
+++ b/ext/pdo_mysql/tests/bug_44707.phpt
@@ -28,32 +28,32 @@ $db = PDOTest::test_factory(__DIR__ . '/common.phpt');
function bug_44707($db) {
- $db->exec('DROP TABLE IF EXISTS test');
- $db->exec('CREATE TABLE test(id INT, mybool TINYINT)');
+ $db->exec('DROP TABLE IF EXISTS test');
+ $db->exec('CREATE TABLE test(id INT, mybool TINYINT)');
- $id = 1;
- $mybool = false;
- var_dump($mybool);
+ $id = 1;
+ $mybool = false;
+ var_dump($mybool);
- $stmt = $db->prepare('INSERT INTO test(id, mybool) VALUES (?, ?)');
- $stmt->bindParam(1, $id);
- $stmt->bindParam(2, $mybool, PDO::PARAM_BOOL);
- var_dump($mybool);
+ $stmt = $db->prepare('INSERT INTO test(id, mybool) VALUES (?, ?)');
+ $stmt->bindParam(1, $id);
+ $stmt->bindParam(2, $mybool, PDO::PARAM_BOOL);
+ var_dump($mybool);
- $stmt->execute();
- var_dump($mybool);
+ $stmt->execute();
+ var_dump($mybool);
- $stmt = $db->query('SELECT * FROM test');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt = $db->query('SELECT * FROM test');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- $stmt = $db->prepare('INSERT INTO test(id, mybool) VALUES (?, ?)');
- $stmt->bindParam(1, $id);
- // INT and integer work well together
- $stmt->bindParam(2, $mybool, PDO::PARAM_INT);
- $stmt->execute();
+ $stmt = $db->prepare('INSERT INTO test(id, mybool) VALUES (?, ?)');
+ $stmt->bindParam(1, $id);
+ // INT and integer work well together
+ $stmt->bindParam(2, $mybool, PDO::PARAM_INT);
+ $stmt->execute();
- $stmt = $db->query('SELECT * FROM test');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt = $db->query('SELECT * FROM test');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
}
diff --git a/ext/pdo_mysql/tests/bug_45120.phpt b/ext/pdo_mysql/tests/bug_45120.phpt
index bc2ea76629..b281a6a354 100644
--- a/ext/pdo_mysql/tests/bug_45120.phpt
+++ b/ext/pdo_mysql/tests/bug_45120.phpt
@@ -15,20 +15,20 @@ $db = PDOTest::test_factory(__DIR__ . '/common.phpt');
function bug_45120($db) {
- $stmt = $db->prepare("SELECT 1 AS 'one'");
- if (true !== $stmt->execute())
- printf("[001] Execute has failed: %s\n", var_export($stmt->errorInfo(), true));
+ $stmt = $db->prepare("SELECT 1 AS 'one'");
+ if (true !== $stmt->execute())
+ printf("[001] Execute has failed: %s\n", var_export($stmt->errorInfo(), true));
- $res = $stmt->fetch(PDO::FETCH_ASSOC);
- if ($res['one'] != 1)
- printf("[002] Wrong results: %s\n", var_export($res, true));
+ $res = $stmt->fetch(PDO::FETCH_ASSOC);
+ if ($res['one'] != 1)
+ printf("[002] Wrong results: %s\n", var_export($res, true));
- if (true !== $stmt->execute())
- printf("[003] Execute has failed: %s\n", var_export($stmt->errorInfo(), true));
+ if (true !== $stmt->execute())
+ printf("[003] Execute has failed: %s\n", var_export($stmt->errorInfo(), true));
- $res = $stmt->fetch(PDO::FETCH_ASSOC);
- if ($res['one'] != 1)
- printf("[004] Wrong results: %s\n", var_export($res, true));
+ $res = $stmt->fetch(PDO::FETCH_ASSOC);
+ if ($res['one'] != 1)
+ printf("[004] Wrong results: %s\n", var_export($res, true));
}
diff --git a/ext/pdo_mysql/tests/bug_61207.phpt b/ext/pdo_mysql/tests/bug_61207.phpt
index 346c1687e7..b8a6a21f09 100644
--- a/ext/pdo_mysql/tests/bug_61207.phpt
+++ b/ext/pdo_mysql/tests/bug_61207.phpt
@@ -26,9 +26,9 @@ $handle1->execute();
$i = 1;
print("Handle 1:\n");
do {
- print('Rowset ' . $i++ . "\n");
- if ($handle1->columnCount() > 0)
- print("Results detected\n");
+ print('Rowset ' . $i++ . "\n");
+ if ($handle1->columnCount() > 0)
+ print("Results detected\n");
} while($handle1->nextRowset());
$handle2 = $db->prepare('select * from test where id = ?;
@@ -42,9 +42,9 @@ $handle2->execute();
$i = 1;
print("Handle 2:\n");
do {
- print('Rowset ' . $i++ . "\n");
- if ($handle2->columnCount() > 0)
- print("Results detected\n");
+ print('Rowset ' . $i++ . "\n");
+ if ($handle2->columnCount() > 0)
+ print("Results detected\n");
} while($handle2->nextRowset());
$handle3 = $db->prepare('update test set id = 2 where id = ?;
@@ -58,9 +58,9 @@ $handle3->execute();
$i = 1;
print("Handle 3:\n");
do {
- print('Rowset ' . $i++ . "\n");
- if ($handle3->columnCount() > 0)
- print("Results detected\n");
+ print('Rowset ' . $i++ . "\n");
+ if ($handle3->columnCount() > 0)
+ print("Results detected\n");
} while($handle3->nextRowset());
$handle4 = $db->prepare('insert into test(id) values(3);
@@ -75,9 +75,9 @@ $handle4->execute();
$i = 1;
print("Handle 4:\n");
do {
- print('Rowset ' . $i++ . "\n");
- if ($handle1->columnCount() > 0)
- print("Results detected\n");
+ print('Rowset ' . $i++ . "\n");
+ if ($handle1->columnCount() > 0)
+ print("Results detected\n");
} while($handle1->nextRowset());
$db->query("DROP TABLE test");
diff --git a/ext/pdo_mysql/tests/bug_61411.phpt b/ext/pdo_mysql/tests/bug_61411.phpt
index f12804ab5f..920dc4e067 100644
--- a/ext/pdo_mysql/tests/bug_61411.phpt
+++ b/ext/pdo_mysql/tests/bug_61411.phpt
@@ -24,9 +24,9 @@ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
$attr = getenv('PDOTEST_ATTR');
if (!$attr) {
- $attr = array();
+ $attr = array();
} else {
- $attr = unserialize($attr);
+ $attr = unserialize($attr);
}
$attr[PDO::ATTR_PERSISTENT] = true;
$attr[PDO::ATTR_EMULATE_PREPARES] = false;
@@ -38,7 +38,7 @@ $stmt = $db->prepare("SELECT 1");
$stmt->execute();
foreach ($stmt as $line) {
- var_dump($line);
+ var_dump($line);
}
print "done!";
diff --git a/ext/pdo_mysql/tests/bug_pecl_12925.phpt b/ext/pdo_mysql/tests/bug_pecl_12925.phpt
index 361ef719d0..2075d14581 100644
--- a/ext/pdo_mysql/tests/bug_pecl_12925.phpt
+++ b/ext/pdo_mysql/tests/bug_pecl_12925.phpt
@@ -15,17 +15,17 @@ $db = MySQLPDOTest::factory();
function bug_pecl_1295($db) {
- $db->exec('DROP TABLE IF EXISTS test');
- $db->exec('CREATE TABLE test(id CHAR(1))');
- $db->exec("INSERT INTO test(id) VALUES ('a')");
- $stmt = $db->prepare("UPDATE test SET id = 'b'");
- $stmt->execute();
- $stmt = $db->prepare("UPDATE test SET id = 'c'");
- $stmt->execute();
- $stmt = $db->prepare('SELECT id FROM test');
- $stmt->execute();
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- $stmt->closeCursor();
+ $db->exec('DROP TABLE IF EXISTS test');
+ $db->exec('CREATE TABLE test(id CHAR(1))');
+ $db->exec("INSERT INTO test(id) VALUES ('a')");
+ $stmt = $db->prepare("UPDATE test SET id = 'b'");
+ $stmt->execute();
+ $stmt = $db->prepare("UPDATE test SET id = 'c'");
+ $stmt->execute();
+ $stmt = $db->prepare('SELECT id FROM test');
+ $stmt->execute();
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt->closeCursor();
}
diff --git a/ext/pdo_mysql/tests/bug_pecl_7976.phpt b/ext/pdo_mysql/tests/bug_pecl_7976.phpt
index 9eb50abd43..00446edc47 100644
--- a/ext/pdo_mysql/tests/bug_pecl_7976.phpt
+++ b/ext/pdo_mysql/tests/bug_pecl_7976.phpt
@@ -25,16 +25,16 @@ $db = MySQLPDOTest::factory();
function bug_pecl_7976($db) {
- $db->exec('DROP PROCEDURE IF EXISTS p');
- $db->exec('CREATE PROCEDURE p() BEGIN SELECT "1" AS _one; END;');
+ $db->exec('DROP PROCEDURE IF EXISTS p');
+ $db->exec('CREATE PROCEDURE p() BEGIN SELECT "1" AS _one; END;');
- $stmt = $db->query('CALL p()');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- $stmt->closeCursor();
+ $stmt = $db->query('CALL p()');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt->closeCursor();
- $stmt = $db->query('CALL p()');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- $stmt->closeCursor();
+ $stmt = $db->query('CALL p()');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt->closeCursor();
}
diff --git a/ext/pdo_mysql/tests/config.inc b/ext/pdo_mysql/tests/config.inc
index f5ea020b78..d0a67ccd16 100644
--- a/ext/pdo_mysql/tests/config.inc
+++ b/ext/pdo_mysql/tests/config.inc
@@ -2,21 +2,21 @@
/* Overrule global settings, if need be */
if (false !== getenv('PDO_MYSQL_TEST_DSN')) {
- # user set them from their shell
- $config['ENV']['PDOTEST_DSN'] = getenv('PDO_MYSQL_TEST_DSN');
- $config['ENV']['PDOTEST_USER'] = getenv('PDO_MYSQL_TEST_USER');
- $config['ENV']['PDOTEST_PASS'] = getenv('PDO_MYSQL_TEST_PASS');
- if (false !== getenv('PDO_MYSQL_TEST_ATTR')) {
- $config['ENV']['PDOTEST_ATTR'] = getenv('PDO_MYSQL_TEST_ATTR');
- }
+ # user set them from their shell
+ $config['ENV']['PDOTEST_DSN'] = getenv('PDO_MYSQL_TEST_DSN');
+ $config['ENV']['PDOTEST_USER'] = getenv('PDO_MYSQL_TEST_USER');
+ $config['ENV']['PDOTEST_PASS'] = getenv('PDO_MYSQL_TEST_PASS');
+ if (false !== getenv('PDO_MYSQL_TEST_ATTR')) {
+ $config['ENV']['PDOTEST_ATTR'] = getenv('PDO_MYSQL_TEST_ATTR');
+ }
} else {
- $config['ENV']['PDOTEST_DSN'] = 'mysql:host=localhost;dbname=test';
- $config['ENV']['PDOTEST_USER'] = 'root';
- $config['ENV']['PDOTEST_PASS'] = '';
+ $config['ENV']['PDOTEST_DSN'] = 'mysql:host=localhost;dbname=test';
+ $config['ENV']['PDOTEST_USER'] = 'root';
+ $config['ENV']['PDOTEST_PASS'] = '';
}
foreach ($config['ENV'] as $k => $v) {
- putenv("$k=$v");
+ putenv("$k=$v");
}
/* MySQL specific settings */
@@ -31,22 +31,22 @@ define('PDO_MYSQL_TEST_PASS', (false !== getenv('PDO_MYSQL_TEST_PASS')) ? getenv
define('PDO_MYSQL_TEST_CHARSET', (false !== getenv('PDO_MYSQL_TEST_CHARSET')) ? getenv('PDO_MYSQL_TEST_CHARSET') : NULL);
if (!function_exists('sys_get_temp_dir')) {
- function sys_get_temp_dir() {
+ function sys_get_temp_dir() {
- if (!empty($_ENV['TMP']))
- return realpath( $_ENV['TMP'] );
- if (!empty($_ENV['TMPDIR']))
- return realpath( $_ENV['TMPDIR'] );
- if (!empty($_ENV['TEMP']))
- return realpath( $_ENV['TEMP'] );
+ if (!empty($_ENV['TMP']))
+ return realpath( $_ENV['TMP'] );
+ if (!empty($_ENV['TMPDIR']))
+ return realpath( $_ENV['TMPDIR'] );
+ if (!empty($_ENV['TEMP']))
+ return realpath( $_ENV['TEMP'] );
- $temp_file = tempnam(md5(uniqid(rand(), TRUE)), '');
- if ($temp_file) {
- $temp_dir = realpath(dirname($temp_file));
- unlink($temp_file);
- return $temp_dir;
- }
- return FALSE;
- }
+ $temp_file = tempnam(md5(uniqid(rand(), TRUE)), '');
+ if ($temp_file) {
+ $temp_dir = realpath(dirname($temp_file));
+ unlink($temp_file);
+ return $temp_dir;
+ }
+ return FALSE;
+ }
}
?>
diff --git a/ext/pdo_mysql/tests/mysql_pdo_test.inc b/ext/pdo_mysql/tests/mysql_pdo_test.inc
index 65ad7b2d17..880f8dbf75 100644
--- a/ext/pdo_mysql/tests/mysql_pdo_test.inc
+++ b/ext/pdo_mysql/tests/mysql_pdo_test.inc
@@ -4,174 +4,174 @@ require_once(dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc');
class MySQLPDOTest extends PDOTest {
- static function factory($classname = 'PDO', $drop_test_tables = false, $myattr = null, $mydsn = null) {
-
- $dsn = self::getDSN($mydsn);
- $user = PDO_MYSQL_TEST_USER;
- $pass = PDO_MYSQL_TEST_PASS;
- $attr = getenv('PDOTEST_ATTR');
-
- if (is_string($attr) && strlen($attr)) {
- $attr = unserialize($attr);
- } else {
- $attr = null;
- }
- if ($user === false)
- $user = NULL;
- if ($pass === false)
- $pass = NULL;
-
- $db = new $classname($dsn, $user, $pass, $attr);
- if (!$db) {
- die("Could not create PDO object (DSN=$dsn, user=$user)\n");
- }
-
- $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
- $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
-
- return $db;
- }
-
- static function createTestTable($db, $engine = null) {
- if (!$engine)
- $engine = PDO_MYSQL_TEST_ENGINE;
-
- $db->exec('DROP TABLE IF EXISTS test');
- $db->exec('CREATE TABLE test(id INT, label CHAR(1), PRIMARY KEY(id)) ENGINE=' . $engine);
- $db->exec("INSERT INTO test(id, label) VALUES (1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e'), (6, 'f')");
- }
-
- static function getTableEngine() {
- return PDO_MYSQL_TEST_ENGINE;
- }
-
-
- static function getDSN($new_options = null, $addition = '') {
- if (!$new_options)
- return PDO_MYSQL_TEST_DSN . $addition;
-
- $old_options = array();
- $dsn = substr(PDO_MYSQL_TEST_DSN,
- strpos(PDO_MYSQL_TEST_DSN, ':') + 1,
- strlen(PDO_MYSQL_TEST_DSN));
-
- // no real parser - any exotic setting can fool us
- $parts = explode(';', $dsn);
- foreach ($parts as $k => $v) {
- $tmp = explode('=', $v);
- if (count($tmp) == 2)
- $old_options[$tmp[0]] = $tmp[1];
- }
-
- $options = $old_options;
- foreach ($new_options as $k => $v)
- $options[$k] = $v;
-
- $dsn = 'mysql:';
- foreach ($options as $k => $v)
- $dsn .= sprintf('%s=%s;', $k, $v);
-
- if ($addition)
- $dsn .= $addition;
- else
- $dsn = substr($dsn, 0, strlen($dsn) -1);
-
- return $dsn;
- }
-
- static function getClientVersion($db) {
- return self::extractVersion($db->getAttribute(PDO::ATTR_CLIENT_VERSION));
- }
-
- static function getServerVersion($db) {
- return self::extractVersion($db->getAttribute(PDO::ATTR_SERVER_VERSION));
- }
-
- static function extractVersion($version_string) {
- /*
- TODO:
- We're a bit in trouble: PDO_MYSQL returns version strings.
- That's wrong according to the manual. According to the manual
- integers should be returned. However, this code needs to work
- with stinky PDO_MYSQL and hopefully better PDO_MYSQLND.
- */
-
- // already an int value?
- if (is_int($version_string))
- return $version_string;
-
- // string but int value?
- $tmp = (int)$version_string;
- if (((string)$tmp) === $version_string)
- return $tmp;
-
- // stinky string which we need to parse
- $parts = explode('.', $version_string);
- if (count($parts) < 3)
- return -1;
-
- $version = (int)$parts[0] * 10000;
- $version+= (int)$parts[1] * 100;
- $version+= (int)$parts[2];
-
- return $version;
- }
-
- static function getTempDir() {
-
- if (!function_exists('sys_get_temp_dir')) {
-
- if (!empty($_ENV['TMP']))
- return realpath( $_ENV['TMP'] );
- if (!empty($_ENV['TMPDIR']))
- return realpath( $_ENV['TMPDIR'] );
- if (!empty($_ENV['TEMP']))
- return realpath( $_ENV['TEMP'] );
-
- $temp_file = tempnam(md5(uniqid(rand(), TRUE)), '');
- if ($temp_file) {
- $temp_dir = realpath(dirname($temp_file));
- unlink($temp_file);
- return $temp_dir;
- }
- return FALSE;
- } else {
- return sys_get_temp_dir();
- }
-
- }
-
- static function detect_transactional_mysql_engine($db) {
- foreach ($db->query("show variables like 'have%'") as $row) {
- if (!empty($row) && $row[1] == 'YES' && ($row[0] == 'have_innodb' || $row[0] == 'have_bdb')) {
- return str_replace("have_", "", $row[0]);
- }
- }
- /* MySQL 5.6.1+ */
- foreach ($db->query("SHOW ENGINES") as $row) {
- if (isset($row['engine']) && isset($row['support'])) {
- if ('InnoDB' == $row['engine'] && ('YES' == $row['support'] || 'DEFAULT' == $row['support']))
- return 'innodb';
- }
- }
- return false;
- }
-
- static function isPDOMySQLnd() {
- ob_start();
- phpinfo();
- $tmp = ob_get_contents();
- ob_end_clean();
- return (preg_match('/PDO Driver for MySQL.*enabled/', $tmp) &&
- preg_match('/Client API version.*mysqlnd/', $tmp));
- }
-
- static function dropTestTable($db = NULL) {
- if (is_null($db))
- $db = self::factory();
-
- $db->exec('DROP TABLE IF EXISTS test');
- }
+ static function factory($classname = 'PDO', $drop_test_tables = false, $myattr = null, $mydsn = null) {
+
+ $dsn = self::getDSN($mydsn);
+ $user = PDO_MYSQL_TEST_USER;
+ $pass = PDO_MYSQL_TEST_PASS;
+ $attr = getenv('PDOTEST_ATTR');
+
+ if (is_string($attr) && strlen($attr)) {
+ $attr = unserialize($attr);
+ } else {
+ $attr = null;
+ }
+ if ($user === false)
+ $user = NULL;
+ if ($pass === false)
+ $pass = NULL;
+
+ $db = new $classname($dsn, $user, $pass, $attr);
+ if (!$db) {
+ die("Could not create PDO object (DSN=$dsn, user=$user)\n");
+ }
+
+ $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+ $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
+
+ return $db;
+ }
+
+ static function createTestTable($db, $engine = null) {
+ if (!$engine)
+ $engine = PDO_MYSQL_TEST_ENGINE;
+
+ $db->exec('DROP TABLE IF EXISTS test');
+ $db->exec('CREATE TABLE test(id INT, label CHAR(1), PRIMARY KEY(id)) ENGINE=' . $engine);
+ $db->exec("INSERT INTO test(id, label) VALUES (1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e'), (6, 'f')");
+ }
+
+ static function getTableEngine() {
+ return PDO_MYSQL_TEST_ENGINE;
+ }
+
+
+ static function getDSN($new_options = null, $addition = '') {
+ if (!$new_options)
+ return PDO_MYSQL_TEST_DSN . $addition;
+
+ $old_options = array();
+ $dsn = substr(PDO_MYSQL_TEST_DSN,
+ strpos(PDO_MYSQL_TEST_DSN, ':') + 1,
+ strlen(PDO_MYSQL_TEST_DSN));
+
+ // no real parser - any exotic setting can fool us
+ $parts = explode(';', $dsn);
+ foreach ($parts as $k => $v) {
+ $tmp = explode('=', $v);
+ if (count($tmp) == 2)
+ $old_options[$tmp[0]] = $tmp[1];
+ }
+
+ $options = $old_options;
+ foreach ($new_options as $k => $v)
+ $options[$k] = $v;
+
+ $dsn = 'mysql:';
+ foreach ($options as $k => $v)
+ $dsn .= sprintf('%s=%s;', $k, $v);
+
+ if ($addition)
+ $dsn .= $addition;
+ else
+ $dsn = substr($dsn, 0, strlen($dsn) -1);
+
+ return $dsn;
+ }
+
+ static function getClientVersion($db) {
+ return self::extractVersion($db->getAttribute(PDO::ATTR_CLIENT_VERSION));
+ }
+
+ static function getServerVersion($db) {
+ return self::extractVersion($db->getAttribute(PDO::ATTR_SERVER_VERSION));
+ }
+
+ static function extractVersion($version_string) {
+ /*
+ TODO:
+ We're a bit in trouble: PDO_MYSQL returns version strings.
+ That's wrong according to the manual. According to the manual
+ integers should be returned. However, this code needs to work
+ with stinky PDO_MYSQL and hopefully better PDO_MYSQLND.
+ */
+
+ // already an int value?
+ if (is_int($version_string))
+ return $version_string;
+
+ // string but int value?
+ $tmp = (int)$version_string;
+ if (((string)$tmp) === $version_string)
+ return $tmp;
+
+ // stinky string which we need to parse
+ $parts = explode('.', $version_string);
+ if (count($parts) < 3)
+ return -1;
+
+ $version = (int)$parts[0] * 10000;
+ $version+= (int)$parts[1] * 100;
+ $version+= (int)$parts[2];
+
+ return $version;
+ }
+
+ static function getTempDir() {
+
+ if (!function_exists('sys_get_temp_dir')) {
+
+ if (!empty($_ENV['TMP']))
+ return realpath( $_ENV['TMP'] );
+ if (!empty($_ENV['TMPDIR']))
+ return realpath( $_ENV['TMPDIR'] );
+ if (!empty($_ENV['TEMP']))
+ return realpath( $_ENV['TEMP'] );
+
+ $temp_file = tempnam(md5(uniqid(rand(), TRUE)), '');
+ if ($temp_file) {
+ $temp_dir = realpath(dirname($temp_file));
+ unlink($temp_file);
+ return $temp_dir;
+ }
+ return FALSE;
+ } else {
+ return sys_get_temp_dir();
+ }
+
+ }
+
+ static function detect_transactional_mysql_engine($db) {
+ foreach ($db->query("show variables like 'have%'") as $row) {
+ if (!empty($row) && $row[1] == 'YES' && ($row[0] == 'have_innodb' || $row[0] == 'have_bdb')) {
+ return str_replace("have_", "", $row[0]);
+ }
+ }
+ /* MySQL 5.6.1+ */
+ foreach ($db->query("SHOW ENGINES") as $row) {
+ if (isset($row['engine']) && isset($row['support'])) {
+ if ('InnoDB' == $row['engine'] && ('YES' == $row['support'] || 'DEFAULT' == $row['support']))
+ return 'innodb';
+ }
+ }
+ return false;
+ }
+
+ static function isPDOMySQLnd() {
+ ob_start();
+ phpinfo();
+ $tmp = ob_get_contents();
+ ob_end_clean();
+ return (preg_match('/PDO Driver for MySQL.*enabled/', $tmp) &&
+ preg_match('/Client API version.*mysqlnd/', $tmp));
+ }
+
+ static function dropTestTable($db = NULL) {
+ if (is_null($db))
+ $db = self::factory();
+
+ $db->exec('DROP TABLE IF EXISTS test');
+ }
}
?>
diff --git a/ext/pdo_mysql/tests/pdo_mysql___construct.phpt b/ext/pdo_mysql/tests/pdo_mysql___construct.phpt
index b849f274be..2231f8b449 100644
--- a/ext/pdo_mysql/tests/pdo_mysql___construct.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql___construct.phpt
@@ -8,289 +8,289 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
-
- function tryandcatch($offset, $code) {
-
- try {
- eval($code);
- assert(sprintf("[%03d] Should have failed\n", $offset) != '');
- } catch (PDOException $e) {
- return sprintf("[%03d] %s, [%s] %s\n",
- $offset,
- $e->getMessage(),
- (isset($db) && is_object($db)) ? $db->errorCode() : 'n/a',
- (isset($db) && is_object($db)) ? implode(' ', $db->errorInfo()) : 'n/a');
- }
-
- return '';
- }
-
- try {
-
- try {
- if (NULL !== ($db = @new PDO()))
- printf("[001] Too few parameters\n");
- } catch (TypeError $ex) {
- }
-
- print tryandcatch(2, '$db = new PDO(chr(0));');
- print tryandcatch(3, '$db = new PDO("a" . chr(0) . "b");');
- print tryandcatch(4, '$db = new PDO("MYSQL");');
- print tryandcatch(5, '$db = new PDO("mysql");');
- print tryandcatch(6, '$db = new PDO("mysql ");');
- print tryandcatch(7, '$db = new PDO("fantasyandfriends :");');
-
- $dsn = PDO_MYSQL_TEST_DSN;
- // MySQL Server might accept anonymous connections, don't
- // print anything
- tryandcatch(8, '$db = new PDO("' . $dsn . '");');
-
- $user = 'dontcreatesuchauser';
- $pass = 'withthispassword';
- print tryandcatch(9, '$db = new PDO("' . $dsn . '", "' . $user . '", "' . $pass . '");');
-
- // should fail
- $dsn = 'mysql:';
- // don't print the message since it can be different
- tryandcatch(10, '$db = new PDO("' . $dsn . '", "' . $user . '", "' . $pass . '");');
-
- $dsn = PDO_MYSQL_TEST_DSN;
- $user = PDO_MYSQL_TEST_USER;
- $pass = PDO_MYSQL_TEST_PASS;
- // should work...
- $db = new PDO($dsn, $user, $pass);
-
- // Reaction on host not specified differs for different configs, so no printing
- $dsn = 'mysql:invalid=foo';
- tryandcatch(11, '$db = new PDO("' . $dsn . '", "' . $user . '", "' . $pass . '");');
-
- $dsn = 'mysql:' . str_repeat('howmuch=canpdoeat;', 1000);
- tryandcatch(12, '$db = new PDO("' . $dsn . '", "' . $user . '", "' . $pass . '");');
-
- $dsn = 'mysql:' . str_repeat('abcdefghij', 1024 * 10) . '=somevalue';
- tryandcatch(13, '$db = new PDO("' . $dsn . '", "' . $user . '", "' . $pass . '");');
-
- if (PDO_MYSQL_TEST_HOST) {
- $host = PDO_MYSQL_TEST_HOST;
- $invalid_host = $host . 'invalid';
-
- // last host specification should be the one used
- $dsn = MySQLPDOTest::getDSN(array('host' => $host), 'host=' . $invalid_host);
- try { $db = @new PDO($dsn, $user, $pass); assert(false); printf("%s\n", $dsn); } catch (PDOException $e) {
- $tmp = $e->getMessage();
- if (!stristr($tmp, 'HY000') && !stristr($tmp, '2005') && !stristr($tmp, '2002'))
- printf("[014] Cannot find proper error codes: %s\n", $tmp);
- }
-
- $dsn = MySQLPDOTest::getDSN(array('host' => $invalid_host), 'host=' . $host);
- try { $db = @new PDO($dsn, $user, $pass); } catch (PDOException $e) {
- printf("[015] DSN=%s, %s\n", $dsn, $e->getMessage());
- }
-
- $invalid_host = '-' . chr(0);
-
- $dsn = MySQLPDOTest::getDSN(array('host' => $invalid_host));
- try { $db = @new PDO($dsn, $user, $pass); assert(false); printf("%s\n", $dsn); } catch (PDOException $e) {
- $tmp = $e->getMessage();
- if (!stristr($tmp, 'HY000') && !stristr($tmp, '2005') && !stristr($tmp, '2002'))
- printf("[016] Cannot find proper error codes: %s\n", $tmp);
- }
-
- // parsing should not get confused by chr(0)
- $dsn = MySQLPDOTest::getDSN(array('host' => $invalid_host), 'host=' . $host);
- try { $db = @new PDO($dsn, $user, $pass); } catch (PDOException $e) {
- printf("[017] DSN=%s, %s\n", $dsn, $e->getMessage());
- }
-
- }
-
- // what about long values for a valid option ...
- // hostnames > 1024 chars break on some NIS-enabled FreeBSD...
- $dsn = MySQLPDOTest::getDSN(array('host' => str_repeat('0123456789', 100)));
- try { $db = @new PDO($dsn, $user, $pass); assert(false); printf("%s\n", $dsn); } catch (PDOException $e) {
- $tmp = $e->getMessage();
- if (!stristr($tmp, 'HY000') && !stristr($tmp, '2005') && !stristr($tmp, '2002'))
- printf("[018] Cannot find proper error codes: %s\n", $tmp);
- }
-
- if (PDO_MYSQL_TEST_PORT && (PDO_MYSQL_TEST_SOCKET == '')) {
- // Playing with the port makes only sense if no socket gets used
-
- $port = PDO_MYSQL_TEST_PORT;
- // let's hope we don't hit a MySQL running on that port...
- $invalid_port = $port * 2;
-
- $dsn = MySQLPDOTest::getDSN(array('port' => $port), 'port=' . $invalid_port);
- try { $db = @new PDO($dsn, $user, $pass); assert(false); printf("%s\n", $dsn); } catch (PDOException $e) {
- $tmp = $e->getMessage();
- if (!stristr($tmp, 'HY000') && !stristr($tmp, '2005'))
- printf("[019] Cannot find proper error codes: %s\n", $tmp);
- }
-
- $dsn = MySQLPDOTest::getDSN(array('port' => $invalid_port), 'port=' . $port);
- try { $db = @new PDO($dsn, $user, $pass); } catch (PDOException $e) {
- printf("[020] DSN=%s, %s\n", $dsn, $e->getMessage());
- }
-
- $invalid_port = 'abc';
- $dsn = MySQLPDOTest::getDSN(array('port' => $port), 'port=' . $invalid_port);
- try {
- $db = @new PDO($dsn, $user, $pass);
- // atoi('abc') = 0, 0 -> fallback to default 3306 -> may or may not fail!
- } catch (PDOException $e) {
- }
-
- }
-
- if (PDO_MYSQL_TEST_DB) {
- $db = PDO_MYSQL_TEST_DB;
- $invalid_db = 'letshopeitdoesnotexist';
-
- $dsn = MySQLPDOTest::getDSN(array('dbname' => $db), 'dbname=' . $invalid_db);
- try { $db = @new PDO($dsn, $user, $pass); assert(false); printf("%s\n", $dsn); } catch (PDOException $e) {
- $tmp = $e->getMessage();
- if (!stristr($tmp, '42000') && !stristr($tmp, '1049'))
- printf("[022] Cannot find proper error codes: %s\n", $tmp);
- }
-
- $dsn = MySQLPDOTest::getDSN(array('dbname' => $invalid_db), 'dbname=' . $db);
- try { $db = @new PDO($dsn, $user, $pass); } catch (PDOException $e) {
- printf("[023] DSN=%s, %s\n", $dsn, $e->getMessage());
- }
-
- }
-
- if (PDO_MYSQL_TEST_SOCKET && (stristr(PDO_MYSQL_TEST_DSN, PDO_MYSQL_TEST_SOCKET) !== false)) {
- $socket = PDO_MYSQL_TEST_SOCKET;
- $invalid_socket = '/lets/hope/it/does/not/exist';
-
- $dsn = MySQLPDOTest::getDSN(array('unix_socket' => $socket), 'unix_socket=' . $invalid_socket);
- try { $db = @new PDO($dsn, $user, $pass); assert(false); printf("%s\n", $dsn); } catch (PDOException $e) {
- $tmp = $e->getMessage();
- if (!stristr($tmp, 'HY000') && !stristr($tmp, '2002'))
- printf("[024] Cannot find proper error codes: %s\n", $tmp);
- }
-
- $dsn = MySQLPDOTest::getDSN(array('unix_socket' => $invalid_socket), 'unix_socket=' . $socket);
- try { $db = @new PDO($dsn, $user, $pass); } catch (PDOException $e) {
- printf("[025] DSN=%s, %s\n", $dsn, $e->getMessage());
- }
-
- }
-
- $have_charset_support = false;
- $dsn = MySQLPDOTest::getDSN();
- try {
- $db = new PDO($dsn, $user, $pass);
- $stmt = $db->query('SELECT VERSION() as _version');
- $version = $stmt->fetch(PDO::FETCH_ASSOC);
-
- $tmp = explode('.', $version['_version']);
- if ((count($tmp) == 3) &&
- (($tmp[0] >= 4 && $tmp[1] >= 1) || ($tmp[0] >= 5))) {
- // MySQL Server 4.1 - charset support available
- $have_charset_support = true;
- }
-
- } catch (PDOException $e) {
- printf("[026] DSN=%s, %s\n", $dsn, $e->getMessage());
- }
-
- if (PDO_MYSQL_TEST_CHARSET) {
- $charset = PDO_MYSQL_TEST_CHARSET;
- $invalid_charset = 'invalid';
-
- if ($have_charset_support) {
- $dsn = MySQLPDOTest::getDSN();
- $db = new PDO($dsn, $user, $pass);
- $stmt = $db->query(sprintf('SHOW CHARACTER SET LIKE "%s"', $charset));
- $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
- $have_charset = (empty($tmp)) ? false : true;
-
- if ($have_charset) {
- $dsn = MySQLPDOTest::getDSN(array('charset' => $charset), 'charset=' . $invalid_charset);
- try {
- $db = @new PDO($dsn, $user, $pass);
- /* NOTE: MySQL does a fallback to the charset suggested during the handshake - no error - no bug! */
- } catch (PDOException $e) {
- $tmp = $e->getMessage();
- /* TODO: add proper codes */
- if (!stristr($tmp, 'sqlstatecode') || !stristr($tmp, 'mysqlinternalerrcode'))
- printf("[027] TODO - Cannot find proper error codes: %s\n", $tmp);
- }
-
- $dsn = MySQLPDOTest::getDSN(array('charset' => $invalid_charset), 'charset=' . $charset);
- try {
- $db = @new PDO($dsn, $user, $pass);
- /* Strictly speaking we should test more: character_set_client, character_set_results, and character_set_connection */
- $stmt = $db->query('SELECT @@character_set_connection AS _charset');
- $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
- if ($tmp['_charset'] != $charset)
- printf("[028] Character sets has not been set, @@character_set_connection reports '%s', expecting '%s'",
- $tmp['_charset'], $charset);
- } catch (PDOException $e) {
- printf("[029] DSN=%s, %s\n", $dsn, $e->getMessage());
- }
- } else {
- printf("[030] You're trying to run the tests with charset '%s' which seems not supported by the server!", $charset);
- }
-
- }
-
- }
-
- if ($have_charset_support) {
- // In case the PDO_MYSQL_TEST_CHARSET interferes with any defaults
- // we do another test to verify that the charset has been set.
- $dsn = MySQLPDOTest::getDSN();
- $db = new PDO($dsn, $user, $pass);
- $stmt = $db->query('SHOW CHARACTER SET LIKE "latin1"');
- $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
- $have_latin1 =(empty($tmp)) ? false : true;
- $stmt = $db->query('SHOW CHARACTER SET LIKE "latin2"');
- $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
- $have_latin2 =(empty($tmp)) ? false : true;
-
- if ($have_latin1 && $have_latin2) {
- // very likely we do have both of them...
- try {
- $dsn = MySQLPDOTest::getDSN(array('charset' => 'latin1'));
- $db = new PDO($dsn, $user, $pass);
- $stmt = $db->query('SELECT @@character_set_connection AS _charset');
- $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
- if ($tmp['_charset'] != 'latin1')
- printf("[031] DSN = %s, Character sets has not been set, @@character_set_connection reports '%s', expecting '%s'",
- $dsn, $tmp['_charset'], 'latin1');
-
- } catch (PDOException $e) {
- printf("[032] %s\n", $e->getMessage());
- }
-
- try {
- $dsn = MySQLPDOTest::getDSN(array('charset' => 'latin2'));
- $db = new PDO($dsn, $user, $pass);
- $stmt = $db->query('SELECT @@character_set_connection AS _charset');
- $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
- if ($tmp['_charset'] != 'latin2')
- printf("[033] DSN = %s, character sets has not been set, @@character_set_connection reports '%s', expecting '%s'",
- $dsn, $tmp['_charset'], 'latin2');
-
- } catch (PDOException $e) {
- printf("[034] %s\n", $e->getMessage());
- }
-
- }
- }
-
- } catch (PDOException $e) {
- printf("[001] %s, [%s] %s\n",
- $e->getMessage(),
- (is_object($db)) ? $db->errorCode() : 'n/a',
- (is_object($db)) ? implode(' ', $db->errorInfo()) : 'n/a');
- }
-
- print "done!";
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+
+ function tryandcatch($offset, $code) {
+
+ try {
+ eval($code);
+ assert(sprintf("[%03d] Should have failed\n", $offset) != '');
+ } catch (PDOException $e) {
+ return sprintf("[%03d] %s, [%s] %s\n",
+ $offset,
+ $e->getMessage(),
+ (isset($db) && is_object($db)) ? $db->errorCode() : 'n/a',
+ (isset($db) && is_object($db)) ? implode(' ', $db->errorInfo()) : 'n/a');
+ }
+
+ return '';
+ }
+
+ try {
+
+ try {
+ if (NULL !== ($db = @new PDO()))
+ printf("[001] Too few parameters\n");
+ } catch (TypeError $ex) {
+ }
+
+ print tryandcatch(2, '$db = new PDO(chr(0));');
+ print tryandcatch(3, '$db = new PDO("a" . chr(0) . "b");');
+ print tryandcatch(4, '$db = new PDO("MYSQL");');
+ print tryandcatch(5, '$db = new PDO("mysql");');
+ print tryandcatch(6, '$db = new PDO("mysql ");');
+ print tryandcatch(7, '$db = new PDO("fantasyandfriends :");');
+
+ $dsn = PDO_MYSQL_TEST_DSN;
+ // MySQL Server might accept anonymous connections, don't
+ // print anything
+ tryandcatch(8, '$db = new PDO("' . $dsn . '");');
+
+ $user = 'dontcreatesuchauser';
+ $pass = 'withthispassword';
+ print tryandcatch(9, '$db = new PDO("' . $dsn . '", "' . $user . '", "' . $pass . '");');
+
+ // should fail
+ $dsn = 'mysql:';
+ // don't print the message since it can be different
+ tryandcatch(10, '$db = new PDO("' . $dsn . '", "' . $user . '", "' . $pass . '");');
+
+ $dsn = PDO_MYSQL_TEST_DSN;
+ $user = PDO_MYSQL_TEST_USER;
+ $pass = PDO_MYSQL_TEST_PASS;
+ // should work...
+ $db = new PDO($dsn, $user, $pass);
+
+ // Reaction on host not specified differs for different configs, so no printing
+ $dsn = 'mysql:invalid=foo';
+ tryandcatch(11, '$db = new PDO("' . $dsn . '", "' . $user . '", "' . $pass . '");');
+
+ $dsn = 'mysql:' . str_repeat('howmuch=canpdoeat;', 1000);
+ tryandcatch(12, '$db = new PDO("' . $dsn . '", "' . $user . '", "' . $pass . '");');
+
+ $dsn = 'mysql:' . str_repeat('abcdefghij', 1024 * 10) . '=somevalue';
+ tryandcatch(13, '$db = new PDO("' . $dsn . '", "' . $user . '", "' . $pass . '");');
+
+ if (PDO_MYSQL_TEST_HOST) {
+ $host = PDO_MYSQL_TEST_HOST;
+ $invalid_host = $host . 'invalid';
+
+ // last host specification should be the one used
+ $dsn = MySQLPDOTest::getDSN(array('host' => $host), 'host=' . $invalid_host);
+ try { $db = @new PDO($dsn, $user, $pass); assert(false); printf("%s\n", $dsn); } catch (PDOException $e) {
+ $tmp = $e->getMessage();
+ if (!stristr($tmp, 'HY000') && !stristr($tmp, '2005') && !stristr($tmp, '2002'))
+ printf("[014] Cannot find proper error codes: %s\n", $tmp);
+ }
+
+ $dsn = MySQLPDOTest::getDSN(array('host' => $invalid_host), 'host=' . $host);
+ try { $db = @new PDO($dsn, $user, $pass); } catch (PDOException $e) {
+ printf("[015] DSN=%s, %s\n", $dsn, $e->getMessage());
+ }
+
+ $invalid_host = '-' . chr(0);
+
+ $dsn = MySQLPDOTest::getDSN(array('host' => $invalid_host));
+ try { $db = @new PDO($dsn, $user, $pass); assert(false); printf("%s\n", $dsn); } catch (PDOException $e) {
+ $tmp = $e->getMessage();
+ if (!stristr($tmp, 'HY000') && !stristr($tmp, '2005') && !stristr($tmp, '2002'))
+ printf("[016] Cannot find proper error codes: %s\n", $tmp);
+ }
+
+ // parsing should not get confused by chr(0)
+ $dsn = MySQLPDOTest::getDSN(array('host' => $invalid_host), 'host=' . $host);
+ try { $db = @new PDO($dsn, $user, $pass); } catch (PDOException $e) {
+ printf("[017] DSN=%s, %s\n", $dsn, $e->getMessage());
+ }
+
+ }
+
+ // what about long values for a valid option ...
+ // hostnames > 1024 chars break on some NIS-enabled FreeBSD...
+ $dsn = MySQLPDOTest::getDSN(array('host' => str_repeat('0123456789', 100)));
+ try { $db = @new PDO($dsn, $user, $pass); assert(false); printf("%s\n", $dsn); } catch (PDOException $e) {
+ $tmp = $e->getMessage();
+ if (!stristr($tmp, 'HY000') && !stristr($tmp, '2005') && !stristr($tmp, '2002'))
+ printf("[018] Cannot find proper error codes: %s\n", $tmp);
+ }
+
+ if (PDO_MYSQL_TEST_PORT && (PDO_MYSQL_TEST_SOCKET == '')) {
+ // Playing with the port makes only sense if no socket gets used
+
+ $port = PDO_MYSQL_TEST_PORT;
+ // let's hope we don't hit a MySQL running on that port...
+ $invalid_port = $port * 2;
+
+ $dsn = MySQLPDOTest::getDSN(array('port' => $port), 'port=' . $invalid_port);
+ try { $db = @new PDO($dsn, $user, $pass); assert(false); printf("%s\n", $dsn); } catch (PDOException $e) {
+ $tmp = $e->getMessage();
+ if (!stristr($tmp, 'HY000') && !stristr($tmp, '2005'))
+ printf("[019] Cannot find proper error codes: %s\n", $tmp);
+ }
+
+ $dsn = MySQLPDOTest::getDSN(array('port' => $invalid_port), 'port=' . $port);
+ try { $db = @new PDO($dsn, $user, $pass); } catch (PDOException $e) {
+ printf("[020] DSN=%s, %s\n", $dsn, $e->getMessage());
+ }
+
+ $invalid_port = 'abc';
+ $dsn = MySQLPDOTest::getDSN(array('port' => $port), 'port=' . $invalid_port);
+ try {
+ $db = @new PDO($dsn, $user, $pass);
+ // atoi('abc') = 0, 0 -> fallback to default 3306 -> may or may not fail!
+ } catch (PDOException $e) {
+ }
+
+ }
+
+ if (PDO_MYSQL_TEST_DB) {
+ $db = PDO_MYSQL_TEST_DB;
+ $invalid_db = 'letshopeitdoesnotexist';
+
+ $dsn = MySQLPDOTest::getDSN(array('dbname' => $db), 'dbname=' . $invalid_db);
+ try { $db = @new PDO($dsn, $user, $pass); assert(false); printf("%s\n", $dsn); } catch (PDOException $e) {
+ $tmp = $e->getMessage();
+ if (!stristr($tmp, '42000') && !stristr($tmp, '1049'))
+ printf("[022] Cannot find proper error codes: %s\n", $tmp);
+ }
+
+ $dsn = MySQLPDOTest::getDSN(array('dbname' => $invalid_db), 'dbname=' . $db);
+ try { $db = @new PDO($dsn, $user, $pass); } catch (PDOException $e) {
+ printf("[023] DSN=%s, %s\n", $dsn, $e->getMessage());
+ }
+
+ }
+
+ if (PDO_MYSQL_TEST_SOCKET && (stristr(PDO_MYSQL_TEST_DSN, PDO_MYSQL_TEST_SOCKET) !== false)) {
+ $socket = PDO_MYSQL_TEST_SOCKET;
+ $invalid_socket = '/lets/hope/it/does/not/exist';
+
+ $dsn = MySQLPDOTest::getDSN(array('unix_socket' => $socket), 'unix_socket=' . $invalid_socket);
+ try { $db = @new PDO($dsn, $user, $pass); assert(false); printf("%s\n", $dsn); } catch (PDOException $e) {
+ $tmp = $e->getMessage();
+ if (!stristr($tmp, 'HY000') && !stristr($tmp, '2002'))
+ printf("[024] Cannot find proper error codes: %s\n", $tmp);
+ }
+
+ $dsn = MySQLPDOTest::getDSN(array('unix_socket' => $invalid_socket), 'unix_socket=' . $socket);
+ try { $db = @new PDO($dsn, $user, $pass); } catch (PDOException $e) {
+ printf("[025] DSN=%s, %s\n", $dsn, $e->getMessage());
+ }
+
+ }
+
+ $have_charset_support = false;
+ $dsn = MySQLPDOTest::getDSN();
+ try {
+ $db = new PDO($dsn, $user, $pass);
+ $stmt = $db->query('SELECT VERSION() as _version');
+ $version = $stmt->fetch(PDO::FETCH_ASSOC);
+
+ $tmp = explode('.', $version['_version']);
+ if ((count($tmp) == 3) &&
+ (($tmp[0] >= 4 && $tmp[1] >= 1) || ($tmp[0] >= 5))) {
+ // MySQL Server 4.1 - charset support available
+ $have_charset_support = true;
+ }
+
+ } catch (PDOException $e) {
+ printf("[026] DSN=%s, %s\n", $dsn, $e->getMessage());
+ }
+
+ if (PDO_MYSQL_TEST_CHARSET) {
+ $charset = PDO_MYSQL_TEST_CHARSET;
+ $invalid_charset = 'invalid';
+
+ if ($have_charset_support) {
+ $dsn = MySQLPDOTest::getDSN();
+ $db = new PDO($dsn, $user, $pass);
+ $stmt = $db->query(sprintf('SHOW CHARACTER SET LIKE "%s"', $charset));
+ $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
+ $have_charset = (empty($tmp)) ? false : true;
+
+ if ($have_charset) {
+ $dsn = MySQLPDOTest::getDSN(array('charset' => $charset), 'charset=' . $invalid_charset);
+ try {
+ $db = @new PDO($dsn, $user, $pass);
+ /* NOTE: MySQL does a fallback to the charset suggested during the handshake - no error - no bug! */
+ } catch (PDOException $e) {
+ $tmp = $e->getMessage();
+ /* TODO: add proper codes */
+ if (!stristr($tmp, 'sqlstatecode') || !stristr($tmp, 'mysqlinternalerrcode'))
+ printf("[027] TODO - Cannot find proper error codes: %s\n", $tmp);
+ }
+
+ $dsn = MySQLPDOTest::getDSN(array('charset' => $invalid_charset), 'charset=' . $charset);
+ try {
+ $db = @new PDO($dsn, $user, $pass);
+ /* Strictly speaking we should test more: character_set_client, character_set_results, and character_set_connection */
+ $stmt = $db->query('SELECT @@character_set_connection AS _charset');
+ $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
+ if ($tmp['_charset'] != $charset)
+ printf("[028] Character sets has not been set, @@character_set_connection reports '%s', expecting '%s'",
+ $tmp['_charset'], $charset);
+ } catch (PDOException $e) {
+ printf("[029] DSN=%s, %s\n", $dsn, $e->getMessage());
+ }
+ } else {
+ printf("[030] You're trying to run the tests with charset '%s' which seems not supported by the server!", $charset);
+ }
+
+ }
+
+ }
+
+ if ($have_charset_support) {
+ // In case the PDO_MYSQL_TEST_CHARSET interferes with any defaults
+ // we do another test to verify that the charset has been set.
+ $dsn = MySQLPDOTest::getDSN();
+ $db = new PDO($dsn, $user, $pass);
+ $stmt = $db->query('SHOW CHARACTER SET LIKE "latin1"');
+ $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
+ $have_latin1 =(empty($tmp)) ? false : true;
+ $stmt = $db->query('SHOW CHARACTER SET LIKE "latin2"');
+ $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
+ $have_latin2 =(empty($tmp)) ? false : true;
+
+ if ($have_latin1 && $have_latin2) {
+ // very likely we do have both of them...
+ try {
+ $dsn = MySQLPDOTest::getDSN(array('charset' => 'latin1'));
+ $db = new PDO($dsn, $user, $pass);
+ $stmt = $db->query('SELECT @@character_set_connection AS _charset');
+ $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
+ if ($tmp['_charset'] != 'latin1')
+ printf("[031] DSN = %s, Character sets has not been set, @@character_set_connection reports '%s', expecting '%s'",
+ $dsn, $tmp['_charset'], 'latin1');
+
+ } catch (PDOException $e) {
+ printf("[032] %s\n", $e->getMessage());
+ }
+
+ try {
+ $dsn = MySQLPDOTest::getDSN(array('charset' => 'latin2'));
+ $db = new PDO($dsn, $user, $pass);
+ $stmt = $db->query('SELECT @@character_set_connection AS _charset');
+ $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
+ if ($tmp['_charset'] != 'latin2')
+ printf("[033] DSN = %s, character sets has not been set, @@character_set_connection reports '%s', expecting '%s'",
+ $dsn, $tmp['_charset'], 'latin2');
+
+ } catch (PDOException $e) {
+ printf("[034] %s\n", $e->getMessage());
+ }
+
+ }
+ }
+
+ } catch (PDOException $e) {
+ printf("[001] %s, [%s] %s\n",
+ $e->getMessage(),
+ (is_object($db)) ? $db->errorCode() : 'n/a',
+ (is_object($db)) ? implode(' ', $db->errorInfo()) : 'n/a');
+ }
+
+ print "done!";
?>
--EXPECTF--
[002] invalid data source name, [n/a] n/a
diff --git a/ext/pdo_mysql/tests/pdo_mysql___construct_ini.phpt b/ext/pdo_mysql/tests/pdo_mysql___construct_ini.phpt
index a03ad7f324..985179b84c 100644
--- a/ext/pdo_mysql/tests/pdo_mysql___construct_ini.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql___construct_ini.phpt
@@ -13,43 +13,43 @@ if (getenv('PDO_MYSQL_TEST_DSN') !== "mysql:dbname=phptest;unix_socket=/tmp/mysq
pdo.dsn.mysql="mysql:dbname=phptest;socket=/tmp/mysql.sock"
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
-
- $found = false;
- $values = ini_get_all();
- foreach ($values as $name => $dsn)
- if ('pdo.dsn.mysql' == $name) {
- printf("pdo.dsn.mysql=%s\n", $dsn);
- $found = true;
- break;
- }
-
- if (!$found) {
- $dsn = ini_get('pdo.dsn.mysql');
- $found = ($dsn !== false);
- }
-
- if (!$found)
- printf("pdo.dsn.mysql cannot be accessed through ini_get_all()/ini_get()\n");
-
- if (MySQLPDOTest::getDSN() == $dsn) {
- // we are lucky, we can run the test
- try {
-
- $user = PDO_MYSQL_TEST_USER;
- $pass = PDO_MYSQL_TEST_PASS;
- $db = new PDO('mysql', $user, $pass);
-
- } catch (PDOException $e) {
- printf("[001] %s, [%s] %s\n",
- $e->getMessage(),
- (is_object($db)) ? $db->errorCode() : 'n/a',
- (is_object($db)) ? implode(' ', $db->errorInfo()) : 'n/a');
- }
-
- }
-
- print "done!";
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+
+ $found = false;
+ $values = ini_get_all();
+ foreach ($values as $name => $dsn)
+ if ('pdo.dsn.mysql' == $name) {
+ printf("pdo.dsn.mysql=%s\n", $dsn);
+ $found = true;
+ break;
+ }
+
+ if (!$found) {
+ $dsn = ini_get('pdo.dsn.mysql');
+ $found = ($dsn !== false);
+ }
+
+ if (!$found)
+ printf("pdo.dsn.mysql cannot be accessed through ini_get_all()/ini_get()\n");
+
+ if (MySQLPDOTest::getDSN() == $dsn) {
+ // we are lucky, we can run the test
+ try {
+
+ $user = PDO_MYSQL_TEST_USER;
+ $pass = PDO_MYSQL_TEST_PASS;
+ $db = new PDO('mysql', $user, $pass);
+
+ } catch (PDOException $e) {
+ printf("[001] %s, [%s] %s\n",
+ $e->getMessage(),
+ (is_object($db)) ? $db->errorCode() : 'n/a',
+ (is_object($db)) ? implode(' ', $db->errorInfo()) : 'n/a');
+ }
+
+ }
+
+ print "done!";
?>
--EXPECT--
pdo.dsn.mysql cannot be accessed through ini_get_all()/ini_get()
diff --git a/ext/pdo_mysql/tests/pdo_mysql___construct_options.phpt b/ext/pdo_mysql/tests/pdo_mysql___construct_options.phpt
index b7a52127c5..ac5f7f6911 100644
--- a/ext/pdo_mysql/tests/pdo_mysql___construct_options.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql___construct_options.phpt
@@ -8,160 +8,160 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
-
- function set_option_and_check($offset, $option, $value, $option_desc) {
-
- $dsn = MySQLPDOTest::getDSN();
- $user = PDO_MYSQL_TEST_USER;
- $pass = PDO_MYSQL_TEST_PASS;
-
- try {
- $db = new PDO($dsn, $user, $pass, array($option => $value));
- if (!is_object($db) || ($value !== ($tmp = @$db->getAttribute($option))))
- printf("[%03d] Expecting '%s'/%s got '%s'/%s' for options '%s'\n",
- $offset,
- $value, gettype($value),
- $tmp, gettype($tmp),
- $option_desc);
- } catch (PDOException $e) {
- printf("[%03d] %s\n", $offset, $e->getMessage());
- }
-
- }
-
- try {
-
- $dsn = MySQLPDOTest::getDSN();
- $user = PDO_MYSQL_TEST_USER;
- $pass = PDO_MYSQL_TEST_PASS;
-
- $valid_options = array(
- /* pdo_dbh.c */
- PDO::ATTR_PERSISTENT => 'PDO::ATTR_PERSISTENT',
- PDO::ATTR_AUTOCOMMIT => 'PDO::ATTR_AUTOCOMMIT',
- /* mysql_driver.c */
- /* TODO Possible bug PDO::ATTR_TIMEOUT != MYSQLI_OPT_CONNECT_TIMEOUT*/
- PDO::ATTR_TIMEOUT => 'PDO::ATTR_TIMEOUT',
- PDO::ATTR_EMULATE_PREPARES => 'PDO::ATTR_EMULATE_PREPARES',
-
- PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => 'PDO::MYSQL_ATTR_USE_BUFFERED_QUERY',
- PDO::MYSQL_ATTR_LOCAL_INFILE => 'PDO::MYSQL_ATTR_LOCAL_INFILE',
- PDO::MYSQL_ATTR_DIRECT_QUERY => 'PDO::MYSQL_ATTR_DIRECT_QUERY',
-
- PDO::MYSQL_ATTR_INIT_COMMAND => 'PDO::MYSQL_ATTR_INIT_COMMAND',
- PDO::ATTR_EMULATE_PREPARES => 'PDO::ATTR_EMULATE_PREPARES',
- );
-
- $defaults = array(
- PDO::ATTR_PERSISTENT => false,
- PDO::ATTR_AUTOCOMMIT => 1,
- /* TODO - why is this a valid option if getAttribute() does not support it?! */
- PDO::ATTR_TIMEOUT => false,
- PDO::ATTR_EMULATE_PREPARES => 1,
- PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => 1,
- /* TODO getAttribute() does not handle it */
- PDO::MYSQL_ATTR_LOCAL_INFILE => false,
- /* TODO getAttribute() does not handle it */
- PDO::MYSQL_ATTR_DIRECT_QUERY => 1,
- PDO::MYSQL_ATTR_INIT_COMMAND => '',
- );
-
- try {
- if (NULL !== ($db = @new PDO($dsn, $user, $pass, 'wrong type')))
- printf("[001] Expecting NULL got %s/%s\n", gettype($db), $db);
- } catch (TypeError $e) {
- }
-
- if (!is_object($db = new PDO($dsn, $user, $pass, array())))
- printf("[002] Expecting object got %s/%s¸\n", gettype($db), $db);
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+
+ function set_option_and_check($offset, $option, $value, $option_desc) {
+
+ $dsn = MySQLPDOTest::getDSN();
+ $user = PDO_MYSQL_TEST_USER;
+ $pass = PDO_MYSQL_TEST_PASS;
+
+ try {
+ $db = new PDO($dsn, $user, $pass, array($option => $value));
+ if (!is_object($db) || ($value !== ($tmp = @$db->getAttribute($option))))
+ printf("[%03d] Expecting '%s'/%s got '%s'/%s' for options '%s'\n",
+ $offset,
+ $value, gettype($value),
+ $tmp, gettype($tmp),
+ $option_desc);
+ } catch (PDOException $e) {
+ printf("[%03d] %s\n", $offset, $e->getMessage());
+ }
+
+ }
+
+ try {
+
+ $dsn = MySQLPDOTest::getDSN();
+ $user = PDO_MYSQL_TEST_USER;
+ $pass = PDO_MYSQL_TEST_PASS;
+
+ $valid_options = array(
+ /* pdo_dbh.c */
+ PDO::ATTR_PERSISTENT => 'PDO::ATTR_PERSISTENT',
+ PDO::ATTR_AUTOCOMMIT => 'PDO::ATTR_AUTOCOMMIT',
+ /* mysql_driver.c */
+ /* TODO Possible bug PDO::ATTR_TIMEOUT != MYSQLI_OPT_CONNECT_TIMEOUT*/
+ PDO::ATTR_TIMEOUT => 'PDO::ATTR_TIMEOUT',
+ PDO::ATTR_EMULATE_PREPARES => 'PDO::ATTR_EMULATE_PREPARES',
+
+ PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => 'PDO::MYSQL_ATTR_USE_BUFFERED_QUERY',
+ PDO::MYSQL_ATTR_LOCAL_INFILE => 'PDO::MYSQL_ATTR_LOCAL_INFILE',
+ PDO::MYSQL_ATTR_DIRECT_QUERY => 'PDO::MYSQL_ATTR_DIRECT_QUERY',
+
+ PDO::MYSQL_ATTR_INIT_COMMAND => 'PDO::MYSQL_ATTR_INIT_COMMAND',
+ PDO::ATTR_EMULATE_PREPARES => 'PDO::ATTR_EMULATE_PREPARES',
+ );
+
+ $defaults = array(
+ PDO::ATTR_PERSISTENT => false,
+ PDO::ATTR_AUTOCOMMIT => 1,
+ /* TODO - why is this a valid option if getAttribute() does not support it?! */
+ PDO::ATTR_TIMEOUT => false,
+ PDO::ATTR_EMULATE_PREPARES => 1,
+ PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => 1,
+ /* TODO getAttribute() does not handle it */
+ PDO::MYSQL_ATTR_LOCAL_INFILE => false,
+ /* TODO getAttribute() does not handle it */
+ PDO::MYSQL_ATTR_DIRECT_QUERY => 1,
+ PDO::MYSQL_ATTR_INIT_COMMAND => '',
+ );
+
+ try {
+ if (NULL !== ($db = @new PDO($dsn, $user, $pass, 'wrong type')))
+ printf("[001] Expecting NULL got %s/%s\n", gettype($db), $db);
+ } catch (TypeError $e) {
+ }
+
+ if (!is_object($db = new PDO($dsn, $user, $pass, array())))
+ printf("[002] Expecting object got %s/%s¸\n", gettype($db), $db);
$invalid = 999;
- if (is_object($db = new PDO($dsn, $user, $pass, array($invalid => true))))
- printf("[003] [TODO][CHANGEREQUEST] Please, lets not ignore invalid options and bail out!\n");
-
- $db = new PDO($dsn, $user, $pass);
- foreach ($valid_options as $option => $name) {
- /* TODO getAttribute() is pretty poor in supporting the options, suppress errors */
- $tmp = @$db->getAttribute($option);
- if ($tmp !== $defaults[$option])
- printf("[003a] Expecting default value for '%s' of '%s'/%s, getAttribute() reports setting '%s'/%s\n",
- $name, $defaults[$option], gettype($defaults[$option]),
- $tmp, gettype($tmp));
- }
-
- $db = new PDO($dsn, $user, $pass, array(PDO::ATTR_AUTOCOMMIT => true));
- if (!is_object($db) || !$db->getAttribute(PDO::ATTR_AUTOCOMMIT))
- printf("[004] Autocommit should be on\n");
-
- $db = new PDO($dsn, $user, $pass, array(PDO::ATTR_AUTOCOMMIT => false));
- if (!is_object($db) || $db->getAttribute(PDO::ATTR_AUTOCOMMIT))
- printf("[005] Autocommit should be off\n");
-
- /* TODO: no way to check ATTR_TIMEOUT settings */
- if (!is_object($db = new PDO($dsn, $user, $pass, array(PDO::ATTR_TIMEOUT => 10))))
- printf("[006] ATTR_TIMEOUT should be accepted\n");
-
- if (!is_object($db = new PDO($dsn, $user, $pass, array(PDO::ATTR_TIMEOUT => PHP_INT_MAX))))
- printf("[007] ATTR_TIMEOUT should be accepted\n");
-
- if (!is_object($db = new PDO($dsn, $user, $pass, array(PDO::ATTR_TIMEOUT => -PHP_INT_MAX))))
- printf("[008] ATTR_TIMEOUT should be accepted\n");
-
- /* TODO: Its ugly that PDO::ATTR_EMULATE_PREPARES == PDO::MYSQL_ATTR_DIRECT_QUERY */
- $db = new PDO($dsn, $user, $pass, array(PDO::ATTR_EMULATE_PREPARES => true));
- if (!is_object($db))
- printf("[009] ATTR_EMULATE_PREPARES should be accepted and on\n");
- if (!$db->getAttribute(PDO::ATTR_EMULATE_PREPARES))
- printf("[010] [TODO][CHANGEREQUEST] ATTR_EMULATE_PREPARES should be on\n");
- if (!$db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[011] As PDO::MYSQL_ATTR_DIRECT_QUERY == PDO::ATTR_EMULATE_PREPARES
- and PDO::ATTR_EMULATE_PREPARES overrules the other, PDO::MYSQL_ATTR_DIRECT_QUERY should be on\n");
-
- $db = new PDO($dsn, $user, $pass, array(PDO::ATTR_EMULATE_PREPARES => false));
- if (!is_object($db))
- printf("[012] ATTR_EMULATE_PREPARES should be accepted and on\n");
- if ($db->getAttribute(PDO::ATTR_EMULATE_PREPARES))
- printf("[013] [TODO][CHANGEREQUEST] ATTR_EMULATE_PREPARES should be off\n");
- if ($db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[014] As PDO::MYSQL_ATTR_DIRECT_QUERY == PDO::ATTR_EMULATE_PREPARES
- and PDO::ATTR_EMULATE_PREPARES overrules the other, PDO::MYSQL_ATTR_DIRECT_QUERY should be off\n");
-
- // PDO::ATTR_EMULATE_PREPARES overrules PDO::MYSQL_ATTR_DIRECT_QUERY
- // TODO: is it clever that a generic setting overrules a specific setting?
- $db = new PDO($dsn, $user, $pass, array(PDO::ATTR_EMULATE_PREPARES => true, PDO::MYSQL_ATTR_DIRECT_QUERY => false));
- if (!$db->getAttribute(PDO::ATTR_EMULATE_PREPARES))
- printf("[015] PDO::ATTR_EMULATE_PREPARES should be on\n");
- if (!$db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[016] PDO::MYSQL_ATTR_DIRECT_QUERY should be on\n");
-
- $db = new PDO($dsn, $user, $pass, array(PDO::ATTR_EMULATE_PREPARES => false, PDO::MYSQL_ATTR_DIRECT_QUERY => true));
- if ($db->getAttribute(PDO::ATTR_EMULATE_PREPARES))
- printf("[017] PDO::ATTR_EMULATE_PREPARES should be off\n");
- if ($db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[018] PDO::MYSQL_ATTR_DIRECT_QUERY should be off\n");
-
- set_option_and_check(19, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 1, 'PDO::MYSQL_ATTR_USE_BUFFERED_QUERY');
- set_option_and_check(20, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 0, 'PDO::MYSQL_ATTR_USE_BUFFERED_QUERY');
-
- set_option_and_check(21, PDO::MYSQL_ATTR_LOCAL_INFILE, true, 'PDO::MYSQL_ATTR_LOCAL_INFILE');
- set_option_and_check(22, PDO::MYSQL_ATTR_LOCAL_INFILE, false, 'PDO::MYSQL_ATTR_LOCAL_INFILE');
-
- set_option_and_check(23, PDO::MYSQL_ATTR_INIT_COMMAND, 'SET @a=1', 'PDO::MYSQL_ATTR_INIT_COMMAND');
- set_option_and_check(24, PDO::MYSQL_ATTR_INIT_COMMAND, '', 'PDO::MYSQL_ATTR_INIT_COMMAND');
- set_option_and_check(25, PDO::MYSQL_ATTR_INIT_COMMAND, 'INSERT INTO nonexistent(invalid) VALUES (1)', 'PDO::MYSQL_ATTR_INIT_COMMAND');
-
- set_option_and_check(33, PDO::MYSQL_ATTR_DIRECT_QUERY, 1, 'PDO::MYSQL_ATTR_DIRECT_QUERY');
- set_option_and_check(34, PDO::MYSQL_ATTR_DIRECT_QUERY, 0, 'PDO::MYSQL_ATTR_DIRECT_QUERY');
-
- } catch (PDOException $e) {
- printf("[001] %s, [%s] %s\n",
- $e->getMessage(),
- (is_object($db)) ? $db->errorCode() : 'n/a',
- (is_object($db)) ? implode(' ', $db->errorInfo()) : 'n/a');
- }
-
- print "done!";
+ if (is_object($db = new PDO($dsn, $user, $pass, array($invalid => true))))
+ printf("[003] [TODO][CHANGEREQUEST] Please, lets not ignore invalid options and bail out!\n");
+
+ $db = new PDO($dsn, $user, $pass);
+ foreach ($valid_options as $option => $name) {
+ /* TODO getAttribute() is pretty poor in supporting the options, suppress errors */
+ $tmp = @$db->getAttribute($option);
+ if ($tmp !== $defaults[$option])
+ printf("[003a] Expecting default value for '%s' of '%s'/%s, getAttribute() reports setting '%s'/%s\n",
+ $name, $defaults[$option], gettype($defaults[$option]),
+ $tmp, gettype($tmp));
+ }
+
+ $db = new PDO($dsn, $user, $pass, array(PDO::ATTR_AUTOCOMMIT => true));
+ if (!is_object($db) || !$db->getAttribute(PDO::ATTR_AUTOCOMMIT))
+ printf("[004] Autocommit should be on\n");
+
+ $db = new PDO($dsn, $user, $pass, array(PDO::ATTR_AUTOCOMMIT => false));
+ if (!is_object($db) || $db->getAttribute(PDO::ATTR_AUTOCOMMIT))
+ printf("[005] Autocommit should be off\n");
+
+ /* TODO: no way to check ATTR_TIMEOUT settings */
+ if (!is_object($db = new PDO($dsn, $user, $pass, array(PDO::ATTR_TIMEOUT => 10))))
+ printf("[006] ATTR_TIMEOUT should be accepted\n");
+
+ if (!is_object($db = new PDO($dsn, $user, $pass, array(PDO::ATTR_TIMEOUT => PHP_INT_MAX))))
+ printf("[007] ATTR_TIMEOUT should be accepted\n");
+
+ if (!is_object($db = new PDO($dsn, $user, $pass, array(PDO::ATTR_TIMEOUT => -PHP_INT_MAX))))
+ printf("[008] ATTR_TIMEOUT should be accepted\n");
+
+ /* TODO: Its ugly that PDO::ATTR_EMULATE_PREPARES == PDO::MYSQL_ATTR_DIRECT_QUERY */
+ $db = new PDO($dsn, $user, $pass, array(PDO::ATTR_EMULATE_PREPARES => true));
+ if (!is_object($db))
+ printf("[009] ATTR_EMULATE_PREPARES should be accepted and on\n");
+ if (!$db->getAttribute(PDO::ATTR_EMULATE_PREPARES))
+ printf("[010] [TODO][CHANGEREQUEST] ATTR_EMULATE_PREPARES should be on\n");
+ if (!$db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[011] As PDO::MYSQL_ATTR_DIRECT_QUERY == PDO::ATTR_EMULATE_PREPARES
+ and PDO::ATTR_EMULATE_PREPARES overrules the other, PDO::MYSQL_ATTR_DIRECT_QUERY should be on\n");
+
+ $db = new PDO($dsn, $user, $pass, array(PDO::ATTR_EMULATE_PREPARES => false));
+ if (!is_object($db))
+ printf("[012] ATTR_EMULATE_PREPARES should be accepted and on\n");
+ if ($db->getAttribute(PDO::ATTR_EMULATE_PREPARES))
+ printf("[013] [TODO][CHANGEREQUEST] ATTR_EMULATE_PREPARES should be off\n");
+ if ($db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[014] As PDO::MYSQL_ATTR_DIRECT_QUERY == PDO::ATTR_EMULATE_PREPARES
+ and PDO::ATTR_EMULATE_PREPARES overrules the other, PDO::MYSQL_ATTR_DIRECT_QUERY should be off\n");
+
+ // PDO::ATTR_EMULATE_PREPARES overrules PDO::MYSQL_ATTR_DIRECT_QUERY
+ // TODO: is it clever that a generic setting overrules a specific setting?
+ $db = new PDO($dsn, $user, $pass, array(PDO::ATTR_EMULATE_PREPARES => true, PDO::MYSQL_ATTR_DIRECT_QUERY => false));
+ if (!$db->getAttribute(PDO::ATTR_EMULATE_PREPARES))
+ printf("[015] PDO::ATTR_EMULATE_PREPARES should be on\n");
+ if (!$db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[016] PDO::MYSQL_ATTR_DIRECT_QUERY should be on\n");
+
+ $db = new PDO($dsn, $user, $pass, array(PDO::ATTR_EMULATE_PREPARES => false, PDO::MYSQL_ATTR_DIRECT_QUERY => true));
+ if ($db->getAttribute(PDO::ATTR_EMULATE_PREPARES))
+ printf("[017] PDO::ATTR_EMULATE_PREPARES should be off\n");
+ if ($db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[018] PDO::MYSQL_ATTR_DIRECT_QUERY should be off\n");
+
+ set_option_and_check(19, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 1, 'PDO::MYSQL_ATTR_USE_BUFFERED_QUERY');
+ set_option_and_check(20, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 0, 'PDO::MYSQL_ATTR_USE_BUFFERED_QUERY');
+
+ set_option_and_check(21, PDO::MYSQL_ATTR_LOCAL_INFILE, true, 'PDO::MYSQL_ATTR_LOCAL_INFILE');
+ set_option_and_check(22, PDO::MYSQL_ATTR_LOCAL_INFILE, false, 'PDO::MYSQL_ATTR_LOCAL_INFILE');
+
+ set_option_and_check(23, PDO::MYSQL_ATTR_INIT_COMMAND, 'SET @a=1', 'PDO::MYSQL_ATTR_INIT_COMMAND');
+ set_option_and_check(24, PDO::MYSQL_ATTR_INIT_COMMAND, '', 'PDO::MYSQL_ATTR_INIT_COMMAND');
+ set_option_and_check(25, PDO::MYSQL_ATTR_INIT_COMMAND, 'INSERT INTO nonexistent(invalid) VALUES (1)', 'PDO::MYSQL_ATTR_INIT_COMMAND');
+
+ set_option_and_check(33, PDO::MYSQL_ATTR_DIRECT_QUERY, 1, 'PDO::MYSQL_ATTR_DIRECT_QUERY');
+ set_option_and_check(34, PDO::MYSQL_ATTR_DIRECT_QUERY, 0, 'PDO::MYSQL_ATTR_DIRECT_QUERY');
+
+ } catch (PDOException $e) {
+ printf("[001] %s, [%s] %s\n",
+ $e->getMessage(),
+ (is_object($db)) ? $db->errorCode() : 'n/a',
+ (is_object($db)) ? implode(' ', $db->errorInfo()) : 'n/a');
+ }
+
+ print "done!";
?>
--EXPECTF--
[003] [TODO][CHANGEREQUEST] Please, lets not ignore invalid options and bail out!
diff --git a/ext/pdo_mysql/tests/pdo_mysql___construct_options_libmysql.phpt b/ext/pdo_mysql/tests/pdo_mysql___construct_options_libmysql.phpt
index 3d7e1d4396..99754c9058 100644
--- a/ext/pdo_mysql/tests/pdo_mysql___construct_options_libmysql.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql___construct_options_libmysql.phpt
@@ -10,72 +10,72 @@ if (MySQLPDOTest::isPDOMySQLnd())
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- function set_option_and_check($offset, $option, $value, $option_desc, $ignore_diff = false) {
+ function set_option_and_check($offset, $option, $value, $option_desc, $ignore_diff = false) {
- $dsn = MySQLPDOTest::getDSN();
- $user = PDO_MYSQL_TEST_USER;
- $pass = PDO_MYSQL_TEST_PASS;
+ $dsn = MySQLPDOTest::getDSN();
+ $user = PDO_MYSQL_TEST_USER;
+ $pass = PDO_MYSQL_TEST_PASS;
- try {
- $db = new PDO($dsn, $user, $pass, array($option => $value));
- if (!is_object($db) || (!$ignore_diff && ($value !== ($tmp = @$db->getAttribute($option)))))
- printf("[%03d] Expecting '%s'/%s got '%s'/%s' for options '%s'\n",
- $offset,
- $value, gettype($value),
- $tmp, gettype($tmp),
- $option_desc);
- } catch (PDOException $e) {
- printf("[%03d] %s\n", $offset, $e->getMessage());
- }
+ try {
+ $db = new PDO($dsn, $user, $pass, array($option => $value));
+ if (!is_object($db) || (!$ignore_diff && ($value !== ($tmp = @$db->getAttribute($option)))))
+ printf("[%03d] Expecting '%s'/%s got '%s'/%s' for options '%s'\n",
+ $offset,
+ $value, gettype($value),
+ $tmp, gettype($tmp),
+ $option_desc);
+ } catch (PDOException $e) {
+ printf("[%03d] %s\n", $offset, $e->getMessage());
+ }
- }
+ }
- try {
+ try {
- $dsn = MySQLPDOTest::getDSN();
- $user = PDO_MYSQL_TEST_USER;
- $pass = PDO_MYSQL_TEST_PASS;
+ $dsn = MySQLPDOTest::getDSN();
+ $user = PDO_MYSQL_TEST_USER;
+ $pass = PDO_MYSQL_TEST_PASS;
- $valid_options = array();
- $valid_options[PDO::MYSQL_ATTR_MAX_BUFFER_SIZE] = 'PDO::MYSQL_ATTR_MAX_BUFFER_SIZE';
- $valid_options[PDO::MYSQL_ATTR_INIT_COMMAND] = 'PDO::MYSQL_ATTR_INIT_COMMAND';
- $valid_options[PDO::MYSQL_ATTR_READ_DEFAULT_FILE] = 'PDO::MYSQL_ATTR_READ_DEFAULT_FILE';
- $valid_options[PDO::MYSQL_ATTR_READ_DEFAULT_GROUP] = 'PDO::MYSQL_ATTR_READ_DEFAULT_GROUP';
+ $valid_options = array();
+ $valid_options[PDO::MYSQL_ATTR_MAX_BUFFER_SIZE] = 'PDO::MYSQL_ATTR_MAX_BUFFER_SIZE';
+ $valid_options[PDO::MYSQL_ATTR_INIT_COMMAND] = 'PDO::MYSQL_ATTR_INIT_COMMAND';
+ $valid_options[PDO::MYSQL_ATTR_READ_DEFAULT_FILE] = 'PDO::MYSQL_ATTR_READ_DEFAULT_FILE';
+ $valid_options[PDO::MYSQL_ATTR_READ_DEFAULT_GROUP] = 'PDO::MYSQL_ATTR_READ_DEFAULT_GROUP';
- $defaults[PDO::MYSQL_ATTR_MAX_BUFFER_SIZE] = 1048576;
- /* TODO getAttribute() does not handle it */
- $defaults[PDO::MYSQL_ATTR_INIT_COMMAND] = '';
- $defaults[PDO::MYSQL_ATTR_READ_DEFAULT_FILE] = false;
- $defaults[PDO::MYSQL_ATTR_READ_DEFAULT_GROUP] = false;
+ $defaults[PDO::MYSQL_ATTR_MAX_BUFFER_SIZE] = 1048576;
+ /* TODO getAttribute() does not handle it */
+ $defaults[PDO::MYSQL_ATTR_INIT_COMMAND] = '';
+ $defaults[PDO::MYSQL_ATTR_READ_DEFAULT_FILE] = false;
+ $defaults[PDO::MYSQL_ATTR_READ_DEFAULT_GROUP] = false;
- $db = new PDO($dsn, $user, $pass);
- foreach ($valid_options as $option => $name) {
- /* TODO getAttribute() is pretty poor in supporting the options, suppress errors */
- $tmp = @$db->getAttribute($option);
- if ($tmp !== $defaults[$option])
- printf("[001] Expecting default value for '%s' of '%s'/%s, getAttribute() reports setting '%s'/%s\n",
- $name, $defaults[$option], gettype($defaults[$option]),
- $tmp, gettype($tmp));
- }
+ $db = new PDO($dsn, $user, $pass);
+ foreach ($valid_options as $option => $name) {
+ /* TODO getAttribute() is pretty poor in supporting the options, suppress errors */
+ $tmp = @$db->getAttribute($option);
+ if ($tmp !== $defaults[$option])
+ printf("[001] Expecting default value for '%s' of '%s'/%s, getAttribute() reports setting '%s'/%s\n",
+ $name, $defaults[$option], gettype($defaults[$option]),
+ $tmp, gettype($tmp));
+ }
- set_option_and_check(26, PDO::MYSQL_ATTR_READ_DEFAULT_FILE, true, 'PDO::MYSQL_ATTR_READ_DEFAULT_FILE');
- set_option_and_check(27, PDO::MYSQL_ATTR_READ_DEFAULT_FILE, false, 'PDO::MYSQL_ATTR_READ_DEFAULT_FILE');
+ set_option_and_check(26, PDO::MYSQL_ATTR_READ_DEFAULT_FILE, true, 'PDO::MYSQL_ATTR_READ_DEFAULT_FILE');
+ set_option_and_check(27, PDO::MYSQL_ATTR_READ_DEFAULT_FILE, false, 'PDO::MYSQL_ATTR_READ_DEFAULT_FILE');
- set_option_and_check(30, PDO::MYSQL_ATTR_MAX_BUFFER_SIZE, -1, 'PDO::MYSQL_ATTR_MAX_BUFFER_SIZE', true);
- set_option_and_check(31, PDO::MYSQL_ATTR_MAX_BUFFER_SIZE, PHP_INT_MAX, 'PDO::MYSQL_ATTR_MAX_BUFFER_SIZE');
- set_option_and_check(32, PDO::MYSQL_ATTR_MAX_BUFFER_SIZE, 1, 'PDO::MYSQL_ATTR_MAX_BUFFER_SIZE');
+ set_option_and_check(30, PDO::MYSQL_ATTR_MAX_BUFFER_SIZE, -1, 'PDO::MYSQL_ATTR_MAX_BUFFER_SIZE', true);
+ set_option_and_check(31, PDO::MYSQL_ATTR_MAX_BUFFER_SIZE, PHP_INT_MAX, 'PDO::MYSQL_ATTR_MAX_BUFFER_SIZE');
+ set_option_and_check(32, PDO::MYSQL_ATTR_MAX_BUFFER_SIZE, 1, 'PDO::MYSQL_ATTR_MAX_BUFFER_SIZE');
- } catch (PDOException $e) {
- printf("[001] %s, [%s] %s\n",
- $e->getMessage(),
- (is_object($db)) ? $db->errorCode() : 'n/a',
- (is_object($db)) ? implode(' ', $db->errorInfo()) : 'n/a');
- }
+ } catch (PDOException $e) {
+ printf("[001] %s, [%s] %s\n",
+ $e->getMessage(),
+ (is_object($db)) ? $db->errorCode() : 'n/a',
+ (is_object($db)) ? implode(' ', $db->errorInfo()) : 'n/a');
+ }
- print "done!";
+ print "done!";
?>
--EXPECT--
[001] Expecting default value for 'PDO::MYSQL_ATTR_INIT_COMMAND' of ''/string, getAttribute() reports setting ''/boolean
diff --git a/ext/pdo_mysql/tests/pdo_mysql___construct_uri.phpt b/ext/pdo_mysql/tests/pdo_mysql___construct_uri.phpt
index 7418033768..8d51961c9d 100644
--- a/ext/pdo_mysql/tests/pdo_mysql___construct_uri.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql___construct_uri.phpt
@@ -8,68 +8,68 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- try {
+ try {
- if ($tmp = MySQLPDOTest::getTempDir()) {
+ if ($tmp = MySQLPDOTest::getTempDir()) {
- $file = $tmp . DIRECTORY_SEPARATOR . 'pdomuri.tst';
- $dsn = MySQLPDOTest::getDSN();
- $user = PDO_MYSQL_TEST_USER;
- $pass = PDO_MYSQL_TEST_PASS;
- $uri = sprintf('uri:file://%s', (substr(PHP_OS, 0, 3) == 'WIN' ? str_replace('\\', '/', $file) : $file));
+ $file = $tmp . DIRECTORY_SEPARATOR . 'pdomuri.tst';
+ $dsn = MySQLPDOTest::getDSN();
+ $user = PDO_MYSQL_TEST_USER;
+ $pass = PDO_MYSQL_TEST_PASS;
+ $uri = sprintf('uri:file://%s', (substr(PHP_OS, 0, 3) == 'WIN' ? str_replace('\\', '/', $file) : $file));
- if ($fp = @fopen($file, 'w')) {
- // ok, great we can create a file with a DSN in it
- fwrite($fp, $dsn);
- fclose($fp);
- clearstatcache();
- assert(file_exists($file));
- try {
- $db = new PDO($uri, $user, $pass);
- } catch (PDOException $e) {
- printf("[002] URI=%s, DSN=%s, File=%s (%d bytes, '%s'), %s\n",
- $uri, $dsn,
- $file, filesize($file), file_get_contents($file),
- $e->getMessage());
- }
- unlink($file);
- }
+ if ($fp = @fopen($file, 'w')) {
+ // ok, great we can create a file with a DSN in it
+ fwrite($fp, $dsn);
+ fclose($fp);
+ clearstatcache();
+ assert(file_exists($file));
+ try {
+ $db = new PDO($uri, $user, $pass);
+ } catch (PDOException $e) {
+ printf("[002] URI=%s, DSN=%s, File=%s (%d bytes, '%s'), %s\n",
+ $uri, $dsn,
+ $file, filesize($file), file_get_contents($file),
+ $e->getMessage());
+ }
+ unlink($file);
+ }
- if ($fp = @fopen($file, 'w')) {
- fwrite($fp, sprintf('mysql:dbname=letshopeinvalid;%s%s',
- chr(0), $dsn));
- fclose($fp);
- clearstatcache();
- assert(file_exists($file));
- try {
- $db = new PDO($uri, $user, $pass);
- } catch (PDOException $e) {
- $expected = array(
- "SQLSTATE[HY000] [1049] Unknown database 'letshopeinvalid'",
- "SQLSTATE[HY000] [2002] No such file or directory"
- );
- printf("[003] URI=%s, DSN=%s, File=%s (%d bytes, '%s'), chr(0) test, %s\n",
- $uri, $dsn,
- $file, filesize($file), file_get_contents($file),
- (in_array($e->getMessage(), $expected) ? 'EXPECTED ERROR' : $e->getMessage()));
- }
- unlink($file);
- }
+ if ($fp = @fopen($file, 'w')) {
+ fwrite($fp, sprintf('mysql:dbname=letshopeinvalid;%s%s',
+ chr(0), $dsn));
+ fclose($fp);
+ clearstatcache();
+ assert(file_exists($file));
+ try {
+ $db = new PDO($uri, $user, $pass);
+ } catch (PDOException $e) {
+ $expected = array(
+ "SQLSTATE[HY000] [1049] Unknown database 'letshopeinvalid'",
+ "SQLSTATE[HY000] [2002] No such file or directory"
+ );
+ printf("[003] URI=%s, DSN=%s, File=%s (%d bytes, '%s'), chr(0) test, %s\n",
+ $uri, $dsn,
+ $file, filesize($file), file_get_contents($file),
+ (in_array($e->getMessage(), $expected) ? 'EXPECTED ERROR' : $e->getMessage()));
+ }
+ unlink($file);
+ }
- }
+ }
- /* TODO: safe mode */
+ /* TODO: safe mode */
- } catch (PDOException $e) {
- printf("[001] %s, [%s] %s\n",
- $e->getMessage(),
- (is_object($db)) ? $db->errorCode() : 'n/a',
- (is_object($db)) ? implode(' ', $db->errorInfo()) : 'n/a');
- }
+ } catch (PDOException $e) {
+ printf("[001] %s, [%s] %s\n",
+ $e->getMessage(),
+ (is_object($db)) ? $db->errorCode() : 'n/a',
+ (is_object($db)) ? implode(' ', $db->errorInfo()) : 'n/a');
+ }
- print "done!";
+ print "done!";
?>
--EXPECTF--
[003] URI=uri:file://%spdomuri.tst, DSN=mysql%sdbname=%s, File=%spdomuri.tst (%d bytes, 'mysql%sdbname=letshopeinvalid%s'), chr(0) test, EXPECTED ERROR
diff --git a/ext/pdo_mysql/tests/pdo_mysql_attr_autocommit.phpt b/ext/pdo_mysql/tests/pdo_mysql_attr_autocommit.phpt
index 361750260b..0dd8663d08 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_attr_autocommit.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_attr_autocommit.phpt
@@ -9,85 +9,85 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- // autocommit should be on by default
- if (1 !== ($tmp = $db->getAttribute(PDO::ATTR_AUTOCOMMIT)))
- printf("[001] Expecting int/1 got %s\n", var_export($tmp, true));
+ // autocommit should be on by default
+ if (1 !== ($tmp = $db->getAttribute(PDO::ATTR_AUTOCOMMIT)))
+ printf("[001] Expecting int/1 got %s\n", var_export($tmp, true));
- // lets see if the server agrees to that
- $row = $db->query('SELECT @@autocommit AS _autocommit')->fetch(PDO::FETCH_ASSOC);
- if (!$row['_autocommit'])
- printf("[002] Server autocommit mode should be on, got '%s'\n", var_export($row['_autocommit']));
+ // lets see if the server agrees to that
+ $row = $db->query('SELECT @@autocommit AS _autocommit')->fetch(PDO::FETCH_ASSOC);
+ if (!$row['_autocommit'])
+ printf("[002] Server autocommit mode should be on, got '%s'\n", var_export($row['_autocommit']));
- // on -> off
- if (!$db->setAttribute(PDO::ATTR_AUTOCOMMIT, 0))
- printf("[003] Cannot turn off autocommit\n");
+ // on -> off
+ if (!$db->setAttribute(PDO::ATTR_AUTOCOMMIT, 0))
+ printf("[003] Cannot turn off autocommit\n");
- $row = $db->query('SELECT @@autocommit AS _autocommit')->fetch(PDO::FETCH_ASSOC);
- if ($row['_autocommit'])
- printf("[004] Server autocommit mode should be off, got '%s'\n", var_export($row['_autocommit']));
+ $row = $db->query('SELECT @@autocommit AS _autocommit')->fetch(PDO::FETCH_ASSOC);
+ if ($row['_autocommit'])
+ printf("[004] Server autocommit mode should be off, got '%s'\n", var_export($row['_autocommit']));
- // PDO thinks autocommit is off, but its manually turned on...
- if (!$db->query('SET autocommit = 1'))
- printf("[005] Cannot turn on server autocommit mode, %s\n", var_export($db->errorInfo(), true));
+ // PDO thinks autocommit is off, but its manually turned on...
+ if (!$db->query('SET autocommit = 1'))
+ printf("[005] Cannot turn on server autocommit mode, %s\n", var_export($db->errorInfo(), true));
- if (0 !== ($tmp = $db->getAttribute(PDO::ATTR_AUTOCOMMIT)))
- printf("[006] Expecting int/0 got %s\n", var_export($tmp, true));
+ if (0 !== ($tmp = $db->getAttribute(PDO::ATTR_AUTOCOMMIT)))
+ printf("[006] Expecting int/0 got %s\n", var_export($tmp, true));
- // off -> on
- if (!$db->query('SET autocommit = 0'))
- printf("[007] Cannot turn off server autocommit mode, %s\n", var_export($db->errorInfo(), true));
+ // off -> on
+ if (!$db->query('SET autocommit = 0'))
+ printf("[007] Cannot turn off server autocommit mode, %s\n", var_export($db->errorInfo(), true));
- if (!$db->setAttribute(PDO::ATTR_AUTOCOMMIT, 1))
- printf("[008] Cannot turn on autocommit\n");
+ if (!$db->setAttribute(PDO::ATTR_AUTOCOMMIT, 1))
+ printf("[008] Cannot turn on autocommit\n");
- $row = $db->query('SELECT @@autocommit AS _autocommit')->fetch(PDO::FETCH_ASSOC);
- if (!$row['_autocommit'])
- printf("[009] Server autocommit mode should be on, got '%s'\n", var_export($row['_autocommit']));
+ $row = $db->query('SELECT @@autocommit AS _autocommit')->fetch(PDO::FETCH_ASSOC);
+ if (!$row['_autocommit'])
+ printf("[009] Server autocommit mode should be on, got '%s'\n", var_export($row['_autocommit']));
- if (1 !== ($tmp = $db->getAttribute(PDO::ATTR_AUTOCOMMIT)))
- printf("[010] Expecting int/1 got %s\n", var_export($tmp, true));
+ if (1 !== ($tmp = $db->getAttribute(PDO::ATTR_AUTOCOMMIT)))
+ printf("[010] Expecting int/1 got %s\n", var_export($tmp, true));
- if (MySQLPDOTest::detect_transactional_mysql_engine($db)) {
- // nice, we have a transactional engine to play with
+ if (MySQLPDOTest::detect_transactional_mysql_engine($db)) {
+ // nice, we have a transactional engine to play with
- MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
- $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
- $num = $row['_num'];
+ MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
+ $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
+ $num = $row['_num'];
- $db->query("INSERT INTO test(id, label) VALUES (100, 'z')");
- $num++;
- $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
- if ($row['_num'] != $num)
- printf("[011] Insert has failed, test will fail\n");
+ $db->query("INSERT INTO test(id, label) VALUES (100, 'z')");
+ $num++;
+ $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
+ if ($row['_num'] != $num)
+ printf("[011] Insert has failed, test will fail\n");
- // autocommit is on, no rollback possible
- $db->query('ROLLBACK');
- $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
- if ($row['_num'] != $num)
- printf("[012] ROLLBACK should not have undone anything\n");
+ // autocommit is on, no rollback possible
+ $db->query('ROLLBACK');
+ $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
+ if ($row['_num'] != $num)
+ printf("[012] ROLLBACK should not have undone anything\n");
- if (!$db->setAttribute(PDO::ATTR_AUTOCOMMIT, 0))
- printf("[013] Cannot turn off autocommit\n");
+ if (!$db->setAttribute(PDO::ATTR_AUTOCOMMIT, 0))
+ printf("[013] Cannot turn off autocommit\n");
- $db->query('DELETE FROM test WHERE id = 100');
- $db->query('ROLLBACK');
- $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
- if ($row['_num'] != $num)
- printf("[014] ROLLBACK should have undone the DELETE\n");
+ $db->query('DELETE FROM test WHERE id = 100');
+ $db->query('ROLLBACK');
+ $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
+ if ($row['_num'] != $num)
+ printf("[014] ROLLBACK should have undone the DELETE\n");
- $db->query('DELETE FROM test WHERE id = 100');
- $db->query('COMMIT');
- $num--;
- $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
- if ($row['_num'] != $num)
- printf("[015] DELETE should have been committed\n");
+ $db->query('DELETE FROM test WHERE id = 100');
+ $db->query('COMMIT');
+ $num--;
+ $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
+ if ($row['_num'] != $num)
+ printf("[015] DELETE should have been committed\n");
- }
+ }
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_attr_case.phpt b/ext/pdo_mysql/tests/pdo_mysql_attr_case.phpt
index a011c864c5..2b45154248 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_attr_case.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_attr_case.phpt
@@ -9,80 +9,80 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db);
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db);
- $default = $db->getAttribute(PDO::ATTR_CASE);
- $known = array(
- PDO::CASE_LOWER => 'PDO::CASE_LOWER',
- PDO::CASE_UPPER => 'PDO::CASE_UPPER',
- PDO::CASE_NATURAL => 'PDO::CASE_NATURAL'
- );
- if (!isset($known[$default]))
- printf("[001] getAttribute(PDO::ATTR_CASE) returns unknown value '%s'\n",
- var_export($default, true));
- else
- var_dump($known[$default]);
+ $default = $db->getAttribute(PDO::ATTR_CASE);
+ $known = array(
+ PDO::CASE_LOWER => 'PDO::CASE_LOWER',
+ PDO::CASE_UPPER => 'PDO::CASE_UPPER',
+ PDO::CASE_NATURAL => 'PDO::CASE_NATURAL'
+ );
+ if (!isset($known[$default]))
+ printf("[001] getAttribute(PDO::ATTR_CASE) returns unknown value '%s'\n",
+ var_export($default, true));
+ else
+ var_dump($known[$default]);
- // lets see what the default is...
- if (!is_object($stmt = $db->query("SELECT id, id AS 'ID_UPPER', label FROM test ORDER BY id ASC LIMIT 2")))
- printf("[002] %s - %s\n",
- var_export($db->errorInfo(), true), var_export($db->errorCode(), true));
+ // lets see what the default is...
+ if (!is_object($stmt = $db->query("SELECT id, id AS 'ID_UPPER', label FROM test ORDER BY id ASC LIMIT 2")))
+ printf("[002] %s - %s\n",
+ var_export($db->errorInfo(), true), var_export($db->errorCode(), true));
- var_dump($stmt->fetchAll(PDO::FETCH_BOTH));
+ var_dump($stmt->fetchAll(PDO::FETCH_BOTH));
- if (true !== $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER))
- printf("[003] Cannot set PDO::ATTR_CASE = PDO::CASE_LOWER, %s - %s\n",
- var_export($db->errorInfo(), true), var_export($db->errorCode(), true));
+ if (true !== $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER))
+ printf("[003] Cannot set PDO::ATTR_CASE = PDO::CASE_LOWER, %s - %s\n",
+ var_export($db->errorInfo(), true), var_export($db->errorCode(), true));
- if (($tmp = $db->getAttribute(PDO::ATTR_CASE)) !== PDO::CASE_LOWER)
- printf("[004] getAttribute(PDO::ATTR_CASE) returns wrong value '%s'\n",
- var_export($tmp, true));
+ if (($tmp = $db->getAttribute(PDO::ATTR_CASE)) !== PDO::CASE_LOWER)
+ printf("[004] getAttribute(PDO::ATTR_CASE) returns wrong value '%s'\n",
+ var_export($tmp, true));
- if (true === $db->exec('ALTER TABLE test ADD MiXeD CHAR(1)'))
- printf("[005] Cannot add column %s - %s\n",
- var_export($db->errorInfo(), true), var_export($db->errorCode(), true));
+ if (true === $db->exec('ALTER TABLE test ADD MiXeD CHAR(1)'))
+ printf("[005] Cannot add column %s - %s\n",
+ var_export($db->errorInfo(), true), var_export($db->errorCode(), true));
- if (false === $db->exec('ALTER TABLE test ADD MYUPPER CHAR(1)'))
- printf("[006] Cannot add column %s - %s\n",
- var_export($db->errorInfo(), true), var_export($db->errorCode(), true));
+ if (false === $db->exec('ALTER TABLE test ADD MYUPPER CHAR(1)'))
+ printf("[006] Cannot add column %s - %s\n",
+ var_export($db->errorInfo(), true), var_export($db->errorCode(), true));
- if (!is_object($stmt = $db->query("SELECT id, id AS 'ID_UPPER', label, MiXeD, MYUPPER FROM test ORDER BY id ASC LIMIT 2")))
- printf("[007] %s - %s\n",
- var_export($db->errorInfo(), true), var_export($db->errorCode(), true));
+ if (!is_object($stmt = $db->query("SELECT id, id AS 'ID_UPPER', label, MiXeD, MYUPPER FROM test ORDER BY id ASC LIMIT 2")))
+ printf("[007] %s - %s\n",
+ var_export($db->errorInfo(), true), var_export($db->errorCode(), true));
- var_dump($stmt->fetchAll(PDO::FETCH_BOTH));
+ var_dump($stmt->fetchAll(PDO::FETCH_BOTH));
- if (true !== $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER))
- printf("[008] Cannot set PDO::ATTR_CASE = PDO::CASE_UPPER %s - %s\n",
- var_export($db->errorInfo(), true), var_export($db->errorCode(), true));
+ if (true !== $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER))
+ printf("[008] Cannot set PDO::ATTR_CASE = PDO::CASE_UPPER %s - %s\n",
+ var_export($db->errorInfo(), true), var_export($db->errorCode(), true));
- if (($tmp = $db->getAttribute(PDO::ATTR_CASE)) !== PDO::CASE_UPPER)
- printf("[009] getAttribute(PDO::ATTR_CASE) returns wrong value '%s'\n",
- var_export($tmp, true));
+ if (($tmp = $db->getAttribute(PDO::ATTR_CASE)) !== PDO::CASE_UPPER)
+ printf("[009] getAttribute(PDO::ATTR_CASE) returns wrong value '%s'\n",
+ var_export($tmp, true));
- if (!is_object($stmt = $db->query("SELECT id, label, MiXeD, MYUPPER, MYUPPER AS 'lower' FROM test ORDER BY id ASC LIMIT 1")))
- printf("[010] %s - %s\n",
- var_export($db->errorInfo(), true), var_export($db->errorCode(), true));
+ if (!is_object($stmt = $db->query("SELECT id, label, MiXeD, MYUPPER, MYUPPER AS 'lower' FROM test ORDER BY id ASC LIMIT 1")))
+ printf("[010] %s - %s\n",
+ var_export($db->errorInfo(), true), var_export($db->errorCode(), true));
- var_dump($stmt->fetchAll(PDO::FETCH_BOTH));
+ var_dump($stmt->fetchAll(PDO::FETCH_BOTH));
- if (true !== $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL))
- printf("[011] Cannot set PDO::ATTR_CASE = PDO::CASE_NATURAL %s - %s\n",
- var_export($db->errorInfo(), true), var_export($db->errorCode(), true));
+ if (true !== $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL))
+ printf("[011] Cannot set PDO::ATTR_CASE = PDO::CASE_NATURAL %s - %s\n",
+ var_export($db->errorInfo(), true), var_export($db->errorCode(), true));
- if (($tmp = $db->getAttribute(PDO::ATTR_CASE)) !== PDO::CASE_NATURAL)
- printf("[012] getAttribute(PDO::ATTR_CASE) returns wrong value '%s'\n",
- var_export($tmp, true));
+ if (($tmp = $db->getAttribute(PDO::ATTR_CASE)) !== PDO::CASE_NATURAL)
+ printf("[012] getAttribute(PDO::ATTR_CASE) returns wrong value '%s'\n",
+ var_export($tmp, true));
- if (!is_object($stmt = $db->query("SELECT id, label, MiXeD, MYUPPER, id AS 'ID' FROM test ORDER BY id ASC LIMIT 1")))
- printf("[013] %s - %s\n",
- var_export($db->errorInfo(), true), var_export($db->errorCode(), true));
+ if (!is_object($stmt = $db->query("SELECT id, label, MiXeD, MYUPPER, id AS 'ID' FROM test ORDER BY id ASC LIMIT 1")))
+ printf("[013] %s - %s\n",
+ var_export($db->errorInfo(), true), var_export($db->errorCode(), true));
- var_dump($stmt->fetchAll(PDO::FETCH_BOTH));
+ var_dump($stmt->fetchAll(PDO::FETCH_BOTH));
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_attr_client_version.phpt b/ext/pdo_mysql/tests/pdo_mysql_attr_client_version.phpt
index ce50df80eb..604ec90c41 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_attr_client_version.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_attr_client_version.phpt
@@ -9,29 +9,29 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- assert(('' == $db->errorCode()) || ('00000' == $db->errorCode()));
+ assert(('' == $db->errorCode()) || ('00000' == $db->errorCode()));
- $version = $db->getAttribute(PDO::ATTR_CLIENT_VERSION);
+ $version = $db->getAttribute(PDO::ATTR_CLIENT_VERSION);
- // No more constraints - mysqlnd and libmysql return different strings at least
- // with mysqli. Return type check is already performed in the generic test.
- // According to the manual we should get an int but as of today we do get a string...
- if ('' == $version)
- printf("[001] Client version must not be empty\n");
+ // No more constraints - mysqlnd and libmysql return different strings at least
+ // with mysqli. Return type check is already performed in the generic test.
+ // According to the manual we should get an int but as of today we do get a string...
+ if ('' == $version)
+ printf("[001] Client version must not be empty\n");
- // Read-only
- if (false !== $db->setAttribute(PDO::ATTR_CLIENT_VERSION, '1.0'))
- printf("[002] Wonderful, I can change the client version!\n");
+ // Read-only
+ if (false !== $db->setAttribute(PDO::ATTR_CLIENT_VERSION, '1.0'))
+ printf("[002] Wonderful, I can change the client version!\n");
- $new_version = $db->getAttribute(PDO::ATTR_CLIENT_VERSION);
- if ($new_version !== $version)
- printf("[003] Did we change it from '%s' to '%s'?\n", $version, $new_version);
+ $new_version = $db->getAttribute(PDO::ATTR_CLIENT_VERSION);
+ if ($new_version !== $version)
+ printf("[003] Did we change it from '%s' to '%s'?\n", $version, $new_version);
- print "done!";
+ print "done!";
?>
--EXPECT--
done!
diff --git a/ext/pdo_mysql/tests/pdo_mysql_attr_connection_status.phpt b/ext/pdo_mysql/tests/pdo_mysql_attr_connection_status.phpt
index 8abb16a1c7..07a1de5b65 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_attr_connection_status.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_attr_connection_status.phpt
@@ -9,24 +9,24 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- $status = $db->getAttribute(PDO::ATTR_CONNECTION_STATUS);
+ $status = $db->getAttribute(PDO::ATTR_CONNECTION_STATUS);
if (!is_string($status))
printf("[002] Expecting string, got '%s'\n", var_export($status, true));
- if ('' == $status)
- printf("[003] Connection status string must not be empty\n");
+ if ('' == $status)
+ printf("[003] Connection status string must not be empty\n");
- if (false !== $db->setAttribute(PDO::ATTR_CONNECTION_STATUS, 'my own connection status'))
- printf("[004] Changing read only attribute\n");
+ if (false !== $db->setAttribute(PDO::ATTR_CONNECTION_STATUS, 'my own connection status'))
+ printf("[004] Changing read only attribute\n");
- $status2 = $db->getAttribute(PDO::ATTR_CONNECTION_STATUS);
- if ($status !== $status2)
- printf("[005] Connection status should not have changed\n");
+ $status2 = $db->getAttribute(PDO::ATTR_CONNECTION_STATUS);
+ if ($status !== $status2)
+ printf("[005] Connection status should not have changed\n");
- print "done!";
+ print "done!";
?>
--EXPECT--
done!
diff --git a/ext/pdo_mysql/tests/pdo_mysql_attr_driver_name.phpt b/ext/pdo_mysql/tests/pdo_mysql_attr_driver_name.phpt
index 65ab531ffd..e105a0eac1 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_attr_driver_name.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_attr_driver_name.phpt
@@ -9,22 +9,22 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- assert(('' == $db->errorCode()) || ('00000' == $db->errorCode()));
+ assert(('' == $db->errorCode()) || ('00000' == $db->errorCode()));
- $name = $db->getAttribute(PDO::ATTR_DRIVER_NAME);
- var_dump($name);
+ $name = $db->getAttribute(PDO::ATTR_DRIVER_NAME);
+ var_dump($name);
- if (false !== $db->setAttribute(PDO::ATTR_DRIVER_NAME, 'mydriver'))
- printf("[001] Wonderful, I can create new PDO drivers!\n");
+ if (false !== $db->setAttribute(PDO::ATTR_DRIVER_NAME, 'mydriver'))
+ printf("[001] Wonderful, I can create new PDO drivers!\n");
- $new_name = $db->getAttribute(PDO::ATTR_DRIVER_NAME);
- if ($name != $new_name)
- printf("[002] Did we change it from '%s' to '%s'?\n", $name, $new_name);
+ $new_name = $db->getAttribute(PDO::ATTR_DRIVER_NAME);
+ if ($name != $new_name)
+ printf("[002] Did we change it from '%s' to '%s'?\n", $name, $new_name);
- print "done!";
+ print "done!";
?>
--EXPECT--
string(5) "mysql"
diff --git a/ext/pdo_mysql/tests/pdo_mysql_attr_errmode.phpt b/ext/pdo_mysql/tests/pdo_mysql_attr_errmode.phpt
index f0dc29b8d4..13c331633c 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_attr_errmode.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_attr_errmode.phpt
@@ -11,153 +11,153 @@ $db = MySQLPDOTest::factory();
error_reporting=E_ALL
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
-
- $valid = array(PDO::ERRMODE_SILENT, PDO::ERRMODE_WARNING, PDO::ERRMODE_EXCEPTION);
- do {
- $invalid = mt_rand(-1000, 1000);
- } while (in_array($invalid, $valid));
-
-
- $tmp = array();
- if (false != @$db->setAttribute(PDO::ATTR_ERRMODE, $tmp))
- printf("[001] Maybe PDO could indicate that this is not a proper way of setting the ERRMODE...\n");
-
- $tmp = new stdClass();
- $ret = @$db->setAttribute(PDO::ATTR_ERRMODE, $tmp);
- if (false != $ret)
- printf("[002] Maybe PDO could indicate that this is not a proper way of setting the ERRMODE...%s\n",
- var_export($ret, true));
-
- $ret = @$db->setAttribute(PDO::ATTR_ERRMODE, 'pdo');
- if (false != $ret)
- printf("[003] Maybe PDO could indicate that this is not a proper way of setting the ERRMODE...%s\n",
- var_export($ret, true));
-
- if (false != @$db->setAttribute(PDO::ATTR_ERRMODE, $invalid))
- printf("[004] Invalid ERRMODE should be rejected\n");
-
- $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
- // no message for any PDO call but...
- $db->query('THIS IS NOT VALID SQL');
- // ... still messages for everything else
- $code = $db->errorCode();
- $info = $db->errorInfo();
-
- if ($code != '42000')
- printf("[005] Expecting SQL code 42000 got '%s'\n", $code);
- if ($code !== $info[0])
- printf("[006] Code and info should be identical, got errorCode() = %s, errorInfo()[0] = %s\n",
- $code, $info[0]);
- if ('' == $info[1])
- printf("[007] Driver specific error code not set\n");
- if ('' == $info[2])
- printf("[008] Driver specific error message not set\n");
-
- $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
- $db->query('THIS IS NOT VALID SQL');
-
- $code = $db->errorCode();
- $info = $db->errorInfo();
-
- if ($code != '42000')
- printf("[009] Expecting SQL code 42000 got '%s'\n", $code);
- if ($code !== $info[0])
- printf("[010] Code and info should be identical, got errorCode() = %s, errorInfo()[0] = %s\n",
- $code, $info[0]);
- if ('' == $info[1])
- printf("[011] Driver specific error code not set\n");
- if ('' == $info[2])
- printf("[012] Driver specific error message not set\n");
-
- $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- try {
- $line = __LINE__ + 1;
- $db->query('THIS IS NOT VALID SQL');
- } catch (PDOException $e) {
-
- $code = $db->errorCode();
- $info = $db->errorInfo();
-
- if ($code != '42000')
- printf("[013] Expecting SQL code 42000 got '%s'\n", $code);
- if ($code !== $info[0])
- printf("[014] Code and info should be identical, got errorCode() = %s, errorInfo()[0] = %s\n",
- $code, $info[0]);
- if ('' == $info[1])
- printf("[015] Driver specific error code not set\n");
- if ('' == $info[2])
- printf("[016] Driver specific error message not set\n");
-
- if ($e->getCode() !== $code)
- printf("[017] Exception code '%s' differs from errorCode '%s'\n",
- $e->getCode(), $code);
-
- $msg = $e->getMessage();
- foreach ($info as $k => $v) {
- if (false === stristr($msg, (string)$v)) {
- printf("[018] Cannot find all parts of the error info ('%s') in the exception message '%s'\n",
- $v, $msg);
- }
- }
-
- if ($e->getLine() !== $line)
- printf("[019] Exception has been thrown in line %d, exception object reports line %d\n",
- $line, $e->getLine());
-
- if ($e->getFile() !== __FILE__)
- printf("[020] Exception has been thrown in file '%s', exception object reports file '%s'\n",
- __FILE__, $e->getFile());
-
- }
-
- function my_handler($e) {
- global $db, $line;
-
- $code = $db->errorCode();
- $info = $db->errorInfo();
-
- if ($code != '42000')
- printf("[021] Expecting SQL code 42000 got '%s'\n", $code);
- if ($code !== $info[0])
- printf("[022] Code and info should be identical, got errorCode() = %s, errorInfo()[0] = %s\n",
- $code, $info[0]);
- if ('' == $info[1])
- printf("[023] Driver specific error code not set\n");
- if ('' == $info[2])
- printf("[024] Driver specific error message not set\n");
-
- if ($e->getCode() !== $code)
- printf("[025] Exception code '%s' differs from errorCode '%s'\n",
- $e->getCode(), $code);
-
- $msg = $e->getMessage();
- foreach ($info as $k => $v) {
- if (false === stristr($msg, (string)$v)) {
- printf("[026] Cannot find all parts of the error info ('%s') in the exception message '%s'\n",
- $v, $msg);
- }
- }
-
- if ($e->getLine() !== $line)
- printf("[027] Exception has been thrown in line %d, exception object reports line %d\n",
- $line, $e->getLine());
-
- if ($e->getFile() !== __FILE__)
- printf("[028] Exception has been thrown in file '%s', exception object reports file '%s'\n",
- __FILE__, $e->getFile());
-
- if (get_class($e) != 'PDOException')
- printf("[029] Expecting PDO exception got exception of type '%s'\n", get_class($e));
-
- print "\nend of execution";
- }
- set_exception_handler('my_handler');
- $line = __LINE__ + 1;
- $db->query('THIS IS NOT VALID SQL');
-
- print "done!\n";
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+
+ $valid = array(PDO::ERRMODE_SILENT, PDO::ERRMODE_WARNING, PDO::ERRMODE_EXCEPTION);
+ do {
+ $invalid = mt_rand(-1000, 1000);
+ } while (in_array($invalid, $valid));
+
+
+ $tmp = array();
+ if (false != @$db->setAttribute(PDO::ATTR_ERRMODE, $tmp))
+ printf("[001] Maybe PDO could indicate that this is not a proper way of setting the ERRMODE...\n");
+
+ $tmp = new stdClass();
+ $ret = @$db->setAttribute(PDO::ATTR_ERRMODE, $tmp);
+ if (false != $ret)
+ printf("[002] Maybe PDO could indicate that this is not a proper way of setting the ERRMODE...%s\n",
+ var_export($ret, true));
+
+ $ret = @$db->setAttribute(PDO::ATTR_ERRMODE, 'pdo');
+ if (false != $ret)
+ printf("[003] Maybe PDO could indicate that this is not a proper way of setting the ERRMODE...%s\n",
+ var_export($ret, true));
+
+ if (false != @$db->setAttribute(PDO::ATTR_ERRMODE, $invalid))
+ printf("[004] Invalid ERRMODE should be rejected\n");
+
+ $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
+ // no message for any PDO call but...
+ $db->query('THIS IS NOT VALID SQL');
+ // ... still messages for everything else
+ $code = $db->errorCode();
+ $info = $db->errorInfo();
+
+ if ($code != '42000')
+ printf("[005] Expecting SQL code 42000 got '%s'\n", $code);
+ if ($code !== $info[0])
+ printf("[006] Code and info should be identical, got errorCode() = %s, errorInfo()[0] = %s\n",
+ $code, $info[0]);
+ if ('' == $info[1])
+ printf("[007] Driver specific error code not set\n");
+ if ('' == $info[2])
+ printf("[008] Driver specific error message not set\n");
+
+ $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+ $db->query('THIS IS NOT VALID SQL');
+
+ $code = $db->errorCode();
+ $info = $db->errorInfo();
+
+ if ($code != '42000')
+ printf("[009] Expecting SQL code 42000 got '%s'\n", $code);
+ if ($code !== $info[0])
+ printf("[010] Code and info should be identical, got errorCode() = %s, errorInfo()[0] = %s\n",
+ $code, $info[0]);
+ if ('' == $info[1])
+ printf("[011] Driver specific error code not set\n");
+ if ('' == $info[2])
+ printf("[012] Driver specific error message not set\n");
+
+ $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+ try {
+ $line = __LINE__ + 1;
+ $db->query('THIS IS NOT VALID SQL');
+ } catch (PDOException $e) {
+
+ $code = $db->errorCode();
+ $info = $db->errorInfo();
+
+ if ($code != '42000')
+ printf("[013] Expecting SQL code 42000 got '%s'\n", $code);
+ if ($code !== $info[0])
+ printf("[014] Code and info should be identical, got errorCode() = %s, errorInfo()[0] = %s\n",
+ $code, $info[0]);
+ if ('' == $info[1])
+ printf("[015] Driver specific error code not set\n");
+ if ('' == $info[2])
+ printf("[016] Driver specific error message not set\n");
+
+ if ($e->getCode() !== $code)
+ printf("[017] Exception code '%s' differs from errorCode '%s'\n",
+ $e->getCode(), $code);
+
+ $msg = $e->getMessage();
+ foreach ($info as $k => $v) {
+ if (false === stristr($msg, (string)$v)) {
+ printf("[018] Cannot find all parts of the error info ('%s') in the exception message '%s'\n",
+ $v, $msg);
+ }
+ }
+
+ if ($e->getLine() !== $line)
+ printf("[019] Exception has been thrown in line %d, exception object reports line %d\n",
+ $line, $e->getLine());
+
+ if ($e->getFile() !== __FILE__)
+ printf("[020] Exception has been thrown in file '%s', exception object reports file '%s'\n",
+ __FILE__, $e->getFile());
+
+ }
+
+ function my_handler($e) {
+ global $db, $line;
+
+ $code = $db->errorCode();
+ $info = $db->errorInfo();
+
+ if ($code != '42000')
+ printf("[021] Expecting SQL code 42000 got '%s'\n", $code);
+ if ($code !== $info[0])
+ printf("[022] Code and info should be identical, got errorCode() = %s, errorInfo()[0] = %s\n",
+ $code, $info[0]);
+ if ('' == $info[1])
+ printf("[023] Driver specific error code not set\n");
+ if ('' == $info[2])
+ printf("[024] Driver specific error message not set\n");
+
+ if ($e->getCode() !== $code)
+ printf("[025] Exception code '%s' differs from errorCode '%s'\n",
+ $e->getCode(), $code);
+
+ $msg = $e->getMessage();
+ foreach ($info as $k => $v) {
+ if (false === stristr($msg, (string)$v)) {
+ printf("[026] Cannot find all parts of the error info ('%s') in the exception message '%s'\n",
+ $v, $msg);
+ }
+ }
+
+ if ($e->getLine() !== $line)
+ printf("[027] Exception has been thrown in line %d, exception object reports line %d\n",
+ $line, $e->getLine());
+
+ if ($e->getFile() !== __FILE__)
+ printf("[028] Exception has been thrown in file '%s', exception object reports file '%s'\n",
+ __FILE__, $e->getFile());
+
+ if (get_class($e) != 'PDOException')
+ printf("[029] Expecting PDO exception got exception of type '%s'\n", get_class($e));
+
+ print "\nend of execution";
+ }
+ set_exception_handler('my_handler');
+ $line = __LINE__ + 1;
+ $db->query('THIS IS NOT VALID SQL');
+
+ print "done!\n";
--EXPECTF--
[003] Maybe PDO could indicate that this is not a proper way of setting the ERRMODE...true
diff --git a/ext/pdo_mysql/tests/pdo_mysql_attr_fetch_table_names.phpt b/ext/pdo_mysql/tests/pdo_mysql_attr_fetch_table_names.phpt
index a19e680de1..eabc4db829 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_attr_fetch_table_names.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_attr_fetch_table_names.phpt
@@ -8,21 +8,21 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db);
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db);
- $db->setAttribute(PDO::ATTR_FETCH_TABLE_NAMES, 1);
- $stmt = $db->query('SELECT label FROM test LIMIT 1');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- $stmt->closeCursor();
+ $db->setAttribute(PDO::ATTR_FETCH_TABLE_NAMES, 1);
+ $stmt = $db->query('SELECT label FROM test LIMIT 1');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt->closeCursor();
- $db->setAttribute(PDO::ATTR_FETCH_TABLE_NAMES, 0);
- $stmt = $db->query('SELECT label FROM test LIMIT 1');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- $stmt->closeCursor();
+ $db->setAttribute(PDO::ATTR_FETCH_TABLE_NAMES, 0);
+ $stmt = $db->query('SELECT label FROM test LIMIT 1');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt->closeCursor();
- print "done!";
+ print "done!";
?>
--EXPECT--
array(1) {
diff --git a/ext/pdo_mysql/tests/pdo_mysql_attr_init_command.phpt b/ext/pdo_mysql/tests/pdo_mysql_attr_init_command.phpt
index cd3b40d6d1..c979075fd7 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_attr_init_command.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_attr_init_command.phpt
@@ -11,29 +11,29 @@ $db = MySQLPDOTest::factory();
error_reporting=E_ALL
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $dsn = MySQLPDOTest::getDSN();
- $user = PDO_MYSQL_TEST_USER;
- $pass = PDO_MYSQL_TEST_PASS;
+ $dsn = MySQLPDOTest::getDSN();
+ $user = PDO_MYSQL_TEST_USER;
+ $pass = PDO_MYSQL_TEST_PASS;
- $table = sprintf("test_%s", md5(mt_rand(0, PHP_INT_MAX)));
- $db = new PDO($dsn, $user, $pass);
- $db->exec(sprintf('DROP TABLE IF EXISTS %s', $table));
+ $table = sprintf("test_%s", md5(mt_rand(0, PHP_INT_MAX)));
+ $db = new PDO($dsn, $user, $pass);
+ $db->exec(sprintf('DROP TABLE IF EXISTS %s', $table));
- $create = sprintf('CREATE TABLE %s(id INT)', $table);
- var_dump($create);
- $db = new PDO($dsn, $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => $create));
+ $create = sprintf('CREATE TABLE %s(id INT)', $table);
+ var_dump($create);
+ $db = new PDO($dsn, $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => $create));
- $info = $db->errorInfo();
- var_dump($info[0]);
+ $info = $db->errorInfo();
+ var_dump($info[0]);
- $db->exec(sprintf('INSERT INTO %s(id) VALUES (1)', $table));
- $stmt = $db->query(sprintf('SELECT id FROM %s', $table));
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $db->exec(sprintf('INSERT INTO %s(id) VALUES (1)', $table));
+ $stmt = $db->query(sprintf('SELECT id FROM %s', $table));
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- $db->exec(sprintf('DROP TABLE IF EXISTS %s', $table));
- print "done!";
+ $db->exec(sprintf('DROP TABLE IF EXISTS %s', $table));
+ print "done!";
?>
--EXPECTF--
string(58) "CREATE TABLE test_%s(id INT)"
diff --git a/ext/pdo_mysql/tests/pdo_mysql_attr_max_buffer_size.phpt b/ext/pdo_mysql/tests/pdo_mysql_attr_max_buffer_size.phpt
index c988b2b3cb..1337c1ac95 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_attr_max_buffer_size.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_attr_max_buffer_size.phpt
@@ -10,58 +10,58 @@ if (MySQLPDOTest::isPDOMySQLnd())
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- function try_buffer_size($offset, $buffer_size) {
+ function try_buffer_size($offset, $buffer_size) {
- try {
+ try {
- $dsn = MySQLPDOTest::getDSN();
- $user = PDO_MYSQL_TEST_USER;
- $pass = PDO_MYSQL_TEST_PASS;
+ $dsn = MySQLPDOTest::getDSN();
+ $user = PDO_MYSQL_TEST_USER;
+ $pass = PDO_MYSQL_TEST_PASS;
- /* unsigned overflow possible ? */
- $db = new PDO($dsn, $user, $pass,
- array(
- PDO::MYSQL_ATTR_MAX_BUFFER_SIZE => $buffer_size,
- /* buffer is only relevant with native PS */
- PDO::MYSQL_ATTR_DIRECT_QUERY => 0,
- PDO::ATTR_EMULATE_PREPARES => 0,
- ));
+ /* unsigned overflow possible ? */
+ $db = new PDO($dsn, $user, $pass,
+ array(
+ PDO::MYSQL_ATTR_MAX_BUFFER_SIZE => $buffer_size,
+ /* buffer is only relevant with native PS */
+ PDO::MYSQL_ATTR_DIRECT_QUERY => 0,
+ PDO::ATTR_EMULATE_PREPARES => 0,
+ ));
- $db->exec('DROP TABLE IF EXISTS test');
- $db->exec(sprintf('CREATE TABLE test(id INT, val LONGBLOB) ENGINE = %s', PDO_MYSQL_TEST_ENGINE));
+ $db->exec('DROP TABLE IF EXISTS test');
+ $db->exec(sprintf('CREATE TABLE test(id INT, val LONGBLOB) ENGINE = %s', PDO_MYSQL_TEST_ENGINE));
- // 10 * (10 * 1024) = 10 * (10 * 1k) = 100k
- $db->exec('INSERT INTO test(id, val) VALUES (1, REPEAT("01234567890", 10240))');
+ // 10 * (10 * 1024) = 10 * (10 * 1k) = 100k
+ $db->exec('INSERT INTO test(id, val) VALUES (1, REPEAT("01234567890", 10240))');
- $stmt = $db->prepare('SELECT id, val FROM test');
- $stmt->execute();
+ $stmt = $db->prepare('SELECT id, val FROM test');
+ $stmt->execute();
- $id = $val = NULL;
- $stmt->bindColumn(1, $id);
- $stmt->bindColumn(2, $val);
- while ($row = $stmt->fetch(PDO::FETCH_BOUND)) {
- printf("[%03d] id = %d, val = %s... (length: %d)\n",
- $offset, $id, substr($val, 0, 10), strlen($val));
- }
- $db->exec('DROP TABLE IF EXISTS test');
+ $id = $val = NULL;
+ $stmt->bindColumn(1, $id);
+ $stmt->bindColumn(2, $val);
+ while ($row = $stmt->fetch(PDO::FETCH_BOUND)) {
+ printf("[%03d] id = %d, val = %s... (length: %d)\n",
+ $offset, $id, substr($val, 0, 10), strlen($val));
+ }
+ $db->exec('DROP TABLE IF EXISTS test');
- } catch (PDOException $e) {
- printf("[%03d] %s, [%s] %s\n",
- $offset,
- $e->getMessage(),
- (is_object($db)) ? $db->errorCode() : 'n/a',
- (is_object($db)) ? implode(' ', $db->errorInfo()) : 'n/a');
- }
- }
+ } catch (PDOException $e) {
+ printf("[%03d] %s, [%s] %s\n",
+ $offset,
+ $e->getMessage(),
+ (is_object($db)) ? $db->errorCode() : 'n/a',
+ (is_object($db)) ? implode(' ', $db->errorInfo()) : 'n/a');
+ }
+ }
- try_buffer_size(1, -1);
- try_buffer_size(2, 1000);
- try_buffer_size(3, NULL);
- try_buffer_size(4, 2000);
+ try_buffer_size(1, -1);
+ try_buffer_size(2, 1000);
+ try_buffer_size(3, NULL);
+ try_buffer_size(4, 2000);
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_attr_multi_statements.phpt b/ext/pdo_mysql/tests/pdo_mysql_attr_multi_statements.phpt
index 92bab1d30d..65b5e1bdc9 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_attr_multi_statements.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_attr_multi_statements.phpt
@@ -11,43 +11,43 @@ $db = MySQLPDOTest::factory();
error_reporting=E_ALL
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $dsn = MySQLPDOTest::getDSN();
- $user = PDO_MYSQL_TEST_USER;
- $pass = PDO_MYSQL_TEST_PASS;
+ $dsn = MySQLPDOTest::getDSN();
+ $user = PDO_MYSQL_TEST_USER;
+ $pass = PDO_MYSQL_TEST_PASS;
- $table = sprintf("test_%s", md5(mt_rand(0, PHP_INT_MAX)));
- $db = new PDO($dsn, $user, $pass);
- $db->exec(sprintf('DROP TABLE IF EXISTS %s', $table));
- $create = sprintf('CREATE TABLE %s(id INT)', $table);
- $db->exec($create);
- $db->exec(sprintf('INSERT INTO %s(id) VALUES (1)', $table));
- $stmt = $db->query(sprintf('SELECT * FROM %s; INSERT INTO %s(id) VALUES (2)', $table, $table));
- $stmt->closeCursor();
- $info = $db->errorInfo();
- var_dump($info[0]);
- $stmt = $db->query(sprintf('SELECT id FROM %s', $table));
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $table = sprintf("test_%s", md5(mt_rand(0, PHP_INT_MAX)));
+ $db = new PDO($dsn, $user, $pass);
+ $db->exec(sprintf('DROP TABLE IF EXISTS %s', $table));
+ $create = sprintf('CREATE TABLE %s(id INT)', $table);
+ $db->exec($create);
+ $db->exec(sprintf('INSERT INTO %s(id) VALUES (1)', $table));
+ $stmt = $db->query(sprintf('SELECT * FROM %s; INSERT INTO %s(id) VALUES (2)', $table, $table));
+ $stmt->closeCursor();
+ $info = $db->errorInfo();
+ var_dump($info[0]);
+ $stmt = $db->query(sprintf('SELECT id FROM %s', $table));
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
// A single query with a trailing delimiter.
- $stmt = $db->query('SELECT 1 AS value;');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt = $db->query('SELECT 1 AS value;');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- // New connection, does not allow multiple statements.
- $db = new PDO($dsn, $user, $pass, array(PDO::MYSQL_ATTR_MULTI_STATEMENTS => false));
- $stmt = $db->query(sprintf('SELECT * FROM %s; INSERT INTO %s(id) VALUES (3)', $table, $table));
- var_dump($stmt);
- $info = $db->errorInfo();
- var_dump($info[0]);
+ // New connection, does not allow multiple statements.
+ $db = new PDO($dsn, $user, $pass, array(PDO::MYSQL_ATTR_MULTI_STATEMENTS => false));
+ $stmt = $db->query(sprintf('SELECT * FROM %s; INSERT INTO %s(id) VALUES (3)', $table, $table));
+ var_dump($stmt);
+ $info = $db->errorInfo();
+ var_dump($info[0]);
- $stmt = $db->query(sprintf('SELECT id FROM %s', $table));
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt = $db->query(sprintf('SELECT id FROM %s', $table));
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
// A single query with a trailing delimiter.
$stmt = $db->query('SELECT 1 AS value;');
var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- $db->exec(sprintf('DROP TABLE IF EXISTS %s', $table));
- print "done!";
+ $db->exec(sprintf('DROP TABLE IF EXISTS %s', $table));
+ print "done!";
?>
--EXPECT--
string(5) "00000"
diff --git a/ext/pdo_mysql/tests/pdo_mysql_attr_oracle_nulls.phpt b/ext/pdo_mysql/tests/pdo_mysql_attr_oracle_nulls.phpt
index 44503c1053..694a039441 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_attr_oracle_nulls.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_attr_oracle_nulls.phpt
@@ -8,78 +8,78 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db);
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db);
- $tmp = array();
- if (false !== @$db->setAttribute(PDO::ATTR_ORACLE_NULLS, $tmp))
- printf("[001] Maybe PDO could indicate that this is not a proper way of setting ATTR_ORACLE_NULLS...\n");
+ $tmp = array();
+ if (false !== @$db->setAttribute(PDO::ATTR_ORACLE_NULLS, $tmp))
+ printf("[001] Maybe PDO could indicate that this is not a proper way of setting ATTR_ORACLE_NULLS...\n");
- $tmp = new stdClass();
- if (false !== @$db->setAttribute(PDO::ATTR_ORACLE_NULLS, $tmp));
- printf("[002] Maybe PDO could indicate that this is not a proper way of setting ATTR_ORACLE_NULLS...\n");
+ $tmp = new stdClass();
+ if (false !== @$db->setAttribute(PDO::ATTR_ORACLE_NULLS, $tmp));
+ printf("[002] Maybe PDO could indicate that this is not a proper way of setting ATTR_ORACLE_NULLS...\n");
- if (false !== @$db->setAttribute(PDO::ATTR_ORACLE_NULLS, 'pdo'))
- printf("[003] Maybe PDO could indicate that this is not a proper way of setting ATTR_ORACLE_NULLS...\n");
+ if (false !== @$db->setAttribute(PDO::ATTR_ORACLE_NULLS, 'pdo'))
+ printf("[003] Maybe PDO could indicate that this is not a proper way of setting ATTR_ORACLE_NULLS...\n");
- $db->setAttribute(PDO::ATTR_ORACLE_NULLS, 1);
- $stmt = $db->query("SELECT NULL AS z, '' AS a, ' ' AS b, TRIM(' ') as c, ' d' AS d, '" . chr(0) . " e' AS e");
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $db->setAttribute(PDO::ATTR_ORACLE_NULLS, 1);
+ $stmt = $db->query("SELECT NULL AS z, '' AS a, ' ' AS b, TRIM(' ') as c, ' d' AS d, '" . chr(0) . " e' AS e");
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- $db->setAttribute(PDO::ATTR_ORACLE_NULLS, 0);
- $stmt = $db->query("SELECT NULL AS z, '' AS a, ' ' AS b, TRIM(' ') as c, ' d' AS d, '" . chr(0) . " e' AS e");
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $db->setAttribute(PDO::ATTR_ORACLE_NULLS, 0);
+ $stmt = $db->query("SELECT NULL AS z, '' AS a, ' ' AS b, TRIM(' ') as c, ' d' AS d, '" . chr(0) . " e' AS e");
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- $db->setAttribute(PDO::ATTR_ORACLE_NULLS, 1);
- $stmt = $db->query('SELECT VERSION() as _version');
- $row = $stmt->fetch(PDO::FETCH_ASSOC);
- if ((int)substr($row['_version'], 0, 1) >= 5)
- $have_procedures = true;
- else
- $have_procedures = false;
+ $db->setAttribute(PDO::ATTR_ORACLE_NULLS, 1);
+ $stmt = $db->query('SELECT VERSION() as _version');
+ $row = $stmt->fetch(PDO::FETCH_ASSOC);
+ if ((int)substr($row['_version'], 0, 1) >= 5)
+ $have_procedures = true;
+ else
+ $have_procedures = false;
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
- if ($have_procedures && (false !== $db->exec('DROP PROCEDURE IF EXISTS p')) &&
- (false !== $db->exec("CREATE PROCEDURE p() BEGIN SELECT NULL as z, '' AS a, ' ' AS b, TRIM(' ') as c, ' d' AS d, ' e' AS e; END;"))) {
- // requires MySQL 5+
- $stmt = $db->prepare('CALL p()');
- $stmt->execute();
- $expected = array(
- array(
- "z" => NULL,
- "a" => NULL,
- "b" => " ",
- "c" => NULL,
- "d" => " d",
- "e" => " e",
- ),
- );
- do {
- $tmp = $stmt->fetchAll(PDO::FETCH_ASSOC);
- if ($tmp != $expected) {
- printf("[004] Expecting %s got %s\n",
- var_export($expected, true), var_export($tmp, true));
- }
- } while ($stmt->nextRowset());
+ if ($have_procedures && (false !== $db->exec('DROP PROCEDURE IF EXISTS p')) &&
+ (false !== $db->exec("CREATE PROCEDURE p() BEGIN SELECT NULL as z, '' AS a, ' ' AS b, TRIM(' ') as c, ' d' AS d, ' e' AS e; END;"))) {
+ // requires MySQL 5+
+ $stmt = $db->prepare('CALL p()');
+ $stmt->execute();
+ $expected = array(
+ array(
+ "z" => NULL,
+ "a" => NULL,
+ "b" => " ",
+ "c" => NULL,
+ "d" => " d",
+ "e" => " e",
+ ),
+ );
+ do {
+ $tmp = $stmt->fetchAll(PDO::FETCH_ASSOC);
+ if ($tmp != $expected) {
+ printf("[004] Expecting %s got %s\n",
+ var_export($expected, true), var_export($tmp, true));
+ }
+ } while ($stmt->nextRowset());
- $stmt->execute();
- do {
- $tmp = $stmt->fetchAll(PDO::FETCH_ASSOC);
- if ($tmp != $expected) {
- printf("[005] Expecting %s got %s\n",
- var_export($expected, true), var_export($tmp, true));
- }
- } while ($stmt->nextRowset());
+ $stmt->execute();
+ do {
+ $tmp = $stmt->fetchAll(PDO::FETCH_ASSOC);
+ if ($tmp != $expected) {
+ printf("[005] Expecting %s got %s\n",
+ var_export($expected, true), var_export($tmp, true));
+ }
+ } while ($stmt->nextRowset());
- }
+ }
- if ($have_procedures)
- @$db->exec('DROP PROCEDURE IF EXISTS p');
+ if ($have_procedures)
+ @$db->exec('DROP PROCEDURE IF EXISTS p');
- print "done!";
+ print "done!";
?>
--EXPECTF--
[002] Maybe PDO could indicate that this is not a proper way of setting ATTR_ORACLE_NULLS...
diff --git a/ext/pdo_mysql/tests/pdo_mysql_attr_prefetch.phpt b/ext/pdo_mysql/tests/pdo_mysql_attr_prefetch.phpt
index f1ca4be1de..155f3514fa 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_attr_prefetch.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_attr_prefetch.phpt
@@ -9,11 +9,11 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- var_dump($db->getAttribute(PDO::ATTR_PREFETCH));
- var_dump($db->setAttribute(PDO::ATTR_PREFETCH, true));
- print "done!";
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ var_dump($db->getAttribute(PDO::ATTR_PREFETCH));
+ var_dump($db->setAttribute(PDO::ATTR_PREFETCH, true));
+ print "done!";
--EXPECTF--
Warning: PDO::getAttribute(): SQLSTATE[IM001]: Driver does not support this function: driver does not support that attribute in %s on line %d
bool(false)
diff --git a/ext/pdo_mysql/tests/pdo_mysql_attr_server_info.phpt b/ext/pdo_mysql/tests/pdo_mysql_attr_server_info.phpt
index 4a142eee38..d1b6e1e02b 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_attr_server_info.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_attr_server_info.phpt
@@ -9,43 +9,43 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
-
- assert(('' == $db->errorCode()) || ('00000' == $db->errorCode()));
-
- $info = $db->getAttribute(PDO::ATTR_SERVER_INFO);
- if ('' == $info)
- printf("[001] Server info must not be empty\n");
-
- // Read-only?
- if (false !== $db->setAttribute(PDO::ATTR_SERVER_INFO, 'new uptime: 0s'))
- printf("[002] Wonderful, I can change the client version!\n");
-
- $new_info = $db->getAttribute(PDO::ATTR_SERVER_INFO);
- if (soundex($new_info) != soundex($info))
- printf("[003] Did we change it from '%s' to '%s'?\n", $info, $info);
-
- // lets hope we always run this in the same second as we did run the server info request...
- if (!$stmt = $db->query("SHOW STATUS LIKE '%uptime%'"))
- printf("[004] Cannot run SHOW STATUS, [%s]\n", $db->errorCode());
- else {
- if (!$row = $stmt->fetch(PDO::FETCH_NUM))
- printf("[005] Unable to fetch uptime, [%s]\n", $db->errorCode());
- else
- $uptime = $row[1];
- $stmt->closeCursor();
- }
-
- if (!preg_match('/Uptime/i', $info))
- printf("[006] Can't find uptime in server info '%s'\n", $info);
-
- if (isset($uptime)) {
- if (!preg_match('/Uptime: (\d+)/i', $info, $matches) || $uptime - $matches[1] > 1) {
- printf("[007] SHOW STATUS and server info have reported a different uptime, please check. Server info: '%s', SHOW STATUS: '%s'\n", $info, $uptime);
- }
- }
-
- print "done!";
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+
+ assert(('' == $db->errorCode()) || ('00000' == $db->errorCode()));
+
+ $info = $db->getAttribute(PDO::ATTR_SERVER_INFO);
+ if ('' == $info)
+ printf("[001] Server info must not be empty\n");
+
+ // Read-only?
+ if (false !== $db->setAttribute(PDO::ATTR_SERVER_INFO, 'new uptime: 0s'))
+ printf("[002] Wonderful, I can change the client version!\n");
+
+ $new_info = $db->getAttribute(PDO::ATTR_SERVER_INFO);
+ if (soundex($new_info) != soundex($info))
+ printf("[003] Did we change it from '%s' to '%s'?\n", $info, $info);
+
+ // lets hope we always run this in the same second as we did run the server info request...
+ if (!$stmt = $db->query("SHOW STATUS LIKE '%uptime%'"))
+ printf("[004] Cannot run SHOW STATUS, [%s]\n", $db->errorCode());
+ else {
+ if (!$row = $stmt->fetch(PDO::FETCH_NUM))
+ printf("[005] Unable to fetch uptime, [%s]\n", $db->errorCode());
+ else
+ $uptime = $row[1];
+ $stmt->closeCursor();
+ }
+
+ if (!preg_match('/Uptime/i', $info))
+ printf("[006] Can't find uptime in server info '%s'\n", $info);
+
+ if (isset($uptime)) {
+ if (!preg_match('/Uptime: (\d+)/i', $info, $matches) || $uptime - $matches[1] > 1) {
+ printf("[007] SHOW STATUS and server info have reported a different uptime, please check. Server info: '%s', SHOW STATUS: '%s'\n", $info, $uptime);
+ }
+ }
+
+ print "done!";
--EXPECT--
done!
diff --git a/ext/pdo_mysql/tests/pdo_mysql_attr_server_version.phpt b/ext/pdo_mysql/tests/pdo_mysql_attr_server_version.phpt
index a635c3771a..62a2fae8b0 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_attr_server_version.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_attr_server_version.phpt
@@ -9,57 +9,57 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- assert(('' == $db->errorCode()) || ('00000' == $db->errorCode()));
+ assert(('' == $db->errorCode()) || ('00000' == $db->errorCode()));
- $version = $db->getAttribute(PDO::ATTR_SERVER_VERSION);
- if ('' == $version)
- printf("[001] Server version must not be empty\n");
+ $version = $db->getAttribute(PDO::ATTR_SERVER_VERSION);
+ if ('' == $version)
+ printf("[001] Server version must not be empty\n");
- // Ideally the server version would be an integer - as documented but BC break!
- // If its a version string it should be of the format \d+\.\d+\.\d+.*
+ // Ideally the server version would be an integer - as documented but BC break!
+ // If its a version string it should be of the format \d+\.\d+\.\d+.*
- if (is_string($version)) {
- // Its not an int like documented but a string - maybe for BC reasons...
- if (!preg_match('/(\d+)\.(\d+)\.(\d+)(.*)/', $version, $matches))
- printf("[002] Client version string seems wrong, got '%s'\n", $version);
- else {
- // Difficult to define any meaningful constraints
- // A possible better check would be calling mysqli_get_server_version() and
- // comparing what we get. However, mysqli_get_server_version() needs a mysqli handle
- // for which in turn one needs to parse the PDO test environment variables
- // for connection parameter...
- if ($matches[1] < 3)
- printf("[003] Strange major version: '%s'. Should be more than 3\n", $matches[1]);
- if ($matches[2] < 0)
- printf("[004] Minor version should be at least 0, got '%s'\n", $matches[2]);
- if ($matches[3] < 0)
- printf("[005] Sub version should be at least 0, got '%s'\n", $matches[2]);
- }
- } else if (is_int($version)) {
- // Lets accept also int if it follows the rules from the original MYSQL C API
- $major = floor($version / 10000);
- $minor = floor(($version - ($main * 10000)) / 100);
- $sub = $version - ($main * 10000) - ($minor * 100);
- if ($major < 3)
- printf("[006] Strange major version: '%s'. Should be more than 3\n", $major);
- if ($minor < 0)
- printf("[007] Minor version should be at least 0, got '%s'\n", $minor);
- if ($sub < 0)
- printf("[008] Sub version should be at least 0, got '%s'\n", $sub);
- }
+ if (is_string($version)) {
+ // Its not an int like documented but a string - maybe for BC reasons...
+ if (!preg_match('/(\d+)\.(\d+)\.(\d+)(.*)/', $version, $matches))
+ printf("[002] Client version string seems wrong, got '%s'\n", $version);
+ else {
+ // Difficult to define any meaningful constraints
+ // A possible better check would be calling mysqli_get_server_version() and
+ // comparing what we get. However, mysqli_get_server_version() needs a mysqli handle
+ // for which in turn one needs to parse the PDO test environment variables
+ // for connection parameter...
+ if ($matches[1] < 3)
+ printf("[003] Strange major version: '%s'. Should be more than 3\n", $matches[1]);
+ if ($matches[2] < 0)
+ printf("[004] Minor version should be at least 0, got '%s'\n", $matches[2]);
+ if ($matches[3] < 0)
+ printf("[005] Sub version should be at least 0, got '%s'\n", $matches[2]);
+ }
+ } else if (is_int($version)) {
+ // Lets accept also int if it follows the rules from the original MYSQL C API
+ $major = floor($version / 10000);
+ $minor = floor(($version - ($main * 10000)) / 100);
+ $sub = $version - ($main * 10000) - ($minor * 100);
+ if ($major < 3)
+ printf("[006] Strange major version: '%s'. Should be more than 3\n", $major);
+ if ($minor < 0)
+ printf("[007] Minor version should be at least 0, got '%s'\n", $minor);
+ if ($sub < 0)
+ printf("[008] Sub version should be at least 0, got '%s'\n", $sub);
+ }
- // Read-only?
- if (false !== $db->setAttribute(PDO::ATTR_CLIENT_VERSION, '1.0'))
- printf("[009] Wonderful, I can change the client version!\n");
+ // Read-only?
+ if (false !== $db->setAttribute(PDO::ATTR_CLIENT_VERSION, '1.0'))
+ printf("[009] Wonderful, I can change the client version!\n");
- $new_version = $db->getAttribute(PDO::ATTR_SERVER_VERSION);
- if ($new_version !== $version)
- printf("[010] Did we change it from '%s' to '%s'?\n", $version, $new_version);
+ $new_version = $db->getAttribute(PDO::ATTR_SERVER_VERSION);
+ if ($new_version !== $version)
+ printf("[010] Did we change it from '%s' to '%s'?\n", $version, $new_version);
- print "done!";
+ print "done!";
?>
--EXPECT--
done!
diff --git a/ext/pdo_mysql/tests/pdo_mysql_attr_statement_class.phpt b/ext/pdo_mysql/tests/pdo_mysql_attr_statement_class.phpt
index 237f03af38..e8bdd16434 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_attr_statement_class.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_attr_statement_class.phpt
@@ -9,100 +9,100 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db);
-
- $default = $db->getAttribute(PDO::ATTR_STATEMENT_CLASS);
- var_dump($default);
-
- if (false !== ($tmp = @$db->setAttribute(PDO::ATTR_STATEMENT_CLASS, 'foo')))
- printf("[002] Expecting boolean/false got %s\n", var_export($tmp, true));
-
- if (false !== ($tmp = @$db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('classname'))))
- printf("[003] Expecting boolean/false got %s\n", var_export($tmp, true));
-
- // unknown class
- if (false !== ($tmp = $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('classname', array()))))
- printf("[004] Expecting boolean/false got %s\n", var_export($tmp, true));
-
- // class not derived from PDOStatement
- class myclass {
- function __construct() {
- printf("myclass\n");
- }
- }
- if (false !== ($tmp = $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('myclass', array()))))
- printf("[005] Expecting boolean/false got %s\n", var_export($tmp, true));
-
- // public constructor not allowed
- class mystatement extends PDOStatement {
- public function __construct() {
- printf("mystatement\n");
- }
- }
-
- if (false !== ($tmp = $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('mystatement', array()))))
- printf("[006] Expecting boolean/false got %s\n", var_export($tmp, true));
-
- // ... but a public destructor is allowed
- class mystatement2 extends PDOStatement {
- public function __destruct() {
- printf("mystatement\n");
- }
- }
-
- if (true !== ($tmp = $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('mystatement2', array()))))
- printf("[007] Expecting boolean/true got %s\n", var_export($tmp, true));
-
- // private constructor
- class mystatement3 extends PDOStatement {
- private function __construct($msg) {
- printf("mystatement3\n");
- var_dump($msg);
- }
- }
- if (true !== ($tmp = $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('mystatement3', array('param1')))))
- printf("[008] Expecting boolean/true got %s\n", var_export($tmp, true));
-
- // private constructor
- class mystatement4 extends PDOStatement {
- private function __construct($msg) {
- printf("%s\n", get_class($this));
- var_dump($msg);
- }
- }
- if (true !== ($tmp = $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('mystatement4', array('param1')))))
- printf("[008] Expecting boolean/true got %s\n", var_export($tmp, true));
-
- var_dump($db->getAttribute(PDO::ATTR_STATEMENT_CLASS));
- $stmt = $db->query('SELECT id, label FROM test ORDER BY id ASC LIMIT 2');
-
- class mystatement5 extends mystatement4 {
- public function fetchAll($fetch_style = 1, $column_index = 1, $ctor_args = array()) {
- return "no data :)";
- }
- }
-
- if (true !== ($tmp = $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('mystatement5', array('mystatement5')))))
- printf("[009] Expecting boolean/true got %s\n", var_export($tmp, true));
- $stmt = $db->query('SELECT id, label FROM test ORDER BY id ASC LIMIT 2');
- var_dump($stmt->fetchAll());
-
- if (true !== ($tmp = $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('PDOStatement'))))
- printf("[010] Expecting boolean/true got %s\n", var_export($tmp, true));
-
- $stmt = $db->query('SELECT id, label FROM test ORDER BY id ASC LIMIT 1');
- var_dump($stmt->fetchAll());
-
- // Yes, this is a fatal error and I want it to fail.
- abstract class mystatement6 extends mystatement5 {
- }
- if (true !== ($tmp = $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('mystatement6', array('mystatement6')))))
- printf("[011] Expecting boolean/true got %s\n", var_export($tmp, true));
- $stmt = $db->query('SELECT id, label FROM test ORDER BY id ASC LIMIT 1');
-
- print "done!";
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db);
+
+ $default = $db->getAttribute(PDO::ATTR_STATEMENT_CLASS);
+ var_dump($default);
+
+ if (false !== ($tmp = @$db->setAttribute(PDO::ATTR_STATEMENT_CLASS, 'foo')))
+ printf("[002] Expecting boolean/false got %s\n", var_export($tmp, true));
+
+ if (false !== ($tmp = @$db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('classname'))))
+ printf("[003] Expecting boolean/false got %s\n", var_export($tmp, true));
+
+ // unknown class
+ if (false !== ($tmp = $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('classname', array()))))
+ printf("[004] Expecting boolean/false got %s\n", var_export($tmp, true));
+
+ // class not derived from PDOStatement
+ class myclass {
+ function __construct() {
+ printf("myclass\n");
+ }
+ }
+ if (false !== ($tmp = $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('myclass', array()))))
+ printf("[005] Expecting boolean/false got %s\n", var_export($tmp, true));
+
+ // public constructor not allowed
+ class mystatement extends PDOStatement {
+ public function __construct() {
+ printf("mystatement\n");
+ }
+ }
+
+ if (false !== ($tmp = $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('mystatement', array()))))
+ printf("[006] Expecting boolean/false got %s\n", var_export($tmp, true));
+
+ // ... but a public destructor is allowed
+ class mystatement2 extends PDOStatement {
+ public function __destruct() {
+ printf("mystatement\n");
+ }
+ }
+
+ if (true !== ($tmp = $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('mystatement2', array()))))
+ printf("[007] Expecting boolean/true got %s\n", var_export($tmp, true));
+
+ // private constructor
+ class mystatement3 extends PDOStatement {
+ private function __construct($msg) {
+ printf("mystatement3\n");
+ var_dump($msg);
+ }
+ }
+ if (true !== ($tmp = $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('mystatement3', array('param1')))))
+ printf("[008] Expecting boolean/true got %s\n", var_export($tmp, true));
+
+ // private constructor
+ class mystatement4 extends PDOStatement {
+ private function __construct($msg) {
+ printf("%s\n", get_class($this));
+ var_dump($msg);
+ }
+ }
+ if (true !== ($tmp = $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('mystatement4', array('param1')))))
+ printf("[008] Expecting boolean/true got %s\n", var_export($tmp, true));
+
+ var_dump($db->getAttribute(PDO::ATTR_STATEMENT_CLASS));
+ $stmt = $db->query('SELECT id, label FROM test ORDER BY id ASC LIMIT 2');
+
+ class mystatement5 extends mystatement4 {
+ public function fetchAll($fetch_style = 1, $column_index = 1, $ctor_args = array()) {
+ return "no data :)";
+ }
+ }
+
+ if (true !== ($tmp = $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('mystatement5', array('mystatement5')))))
+ printf("[009] Expecting boolean/true got %s\n", var_export($tmp, true));
+ $stmt = $db->query('SELECT id, label FROM test ORDER BY id ASC LIMIT 2');
+ var_dump($stmt->fetchAll());
+
+ if (true !== ($tmp = $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('PDOStatement'))))
+ printf("[010] Expecting boolean/true got %s\n", var_export($tmp, true));
+
+ $stmt = $db->query('SELECT id, label FROM test ORDER BY id ASC LIMIT 1');
+ var_dump($stmt->fetchAll());
+
+ // Yes, this is a fatal error and I want it to fail.
+ abstract class mystatement6 extends mystatement5 {
+ }
+ if (true !== ($tmp = $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('mystatement6', array('mystatement6')))))
+ printf("[011] Expecting boolean/true got %s\n", var_export($tmp, true));
+ $stmt = $db->query('SELECT id, label FROM test ORDER BY id ASC LIMIT 1');
+
+ print "done!";
?>
--EXPECTF--
array(1) {
diff --git a/ext/pdo_mysql/tests/pdo_mysql_begintransaction.phpt b/ext/pdo_mysql/tests/pdo_mysql_begintransaction.phpt
index f2653f4b6b..2fc60f9fc2 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_begintransaction.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_begintransaction.phpt
@@ -11,175 +11,175 @@ if (false == MySQLPDOTest::detect_transactional_mysql_engine($db))
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
- if (1 !== $db->getAttribute(PDO::ATTR_AUTOCOMMIT))
- printf("[001] Autocommit should be on by default\n");
+ if (1 !== $db->getAttribute(PDO::ATTR_AUTOCOMMIT))
+ printf("[001] Autocommit should be on by default\n");
- if (false == $db->beginTransaction())
- printf("[002] Cannot start a transaction, [%s] [%s]\n",
- $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (false == $db->beginTransaction())
+ printf("[002] Cannot start a transaction, [%s] [%s]\n",
+ $db->errorCode(), implode(' ', $db->errorInfo()));
- if (1 !== $db->getAttribute(PDO::ATTR_AUTOCOMMIT))
- printf("[003] Autocommit should be on by default, beginTransaction() shall not impact it\n");
+ if (1 !== $db->getAttribute(PDO::ATTR_AUTOCOMMIT))
+ printf("[003] Autocommit should be on by default, beginTransaction() shall not impact it\n");
- if (0 == $db->exec('DELETE FROM test'))
- printf("[004] No rows deleted, can't be true.\n");
+ if (0 == $db->exec('DELETE FROM test'))
+ printf("[004] No rows deleted, can't be true.\n");
- /* This is the PDO way to close a connection */
- $db = null;
- $db = MySQLPDOTest::factory();
+ /* This is the PDO way to close a connection */
+ $db = null;
+ $db = MySQLPDOTest::factory();
- /* Autocommit was off - by definition. Commit was not issued. DELETE should have been rolled back. */
- if (!($stmt = $db->query('SELECT id, label FROM test ORDER BY id ASC')))
- printf("[005] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
+ /* Autocommit was off - by definition. Commit was not issued. DELETE should have been rolled back. */
+ if (!($stmt = $db->query('SELECT id, label FROM test ORDER BY id ASC')))
+ printf("[005] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
- $row = $stmt->fetch(PDO::FETCH_ASSOC);
- var_dump($row);
+ $row = $stmt->fetch(PDO::FETCH_ASSOC);
+ var_dump($row);
- if (!$db->beginTransaction())
- printf("[006] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (!$db->beginTransaction())
+ printf("[006] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
- if (1 !== $db->exec(sprintf('DELETE FROM test WHERE id = %d', $row['id'])))
- printf("[007] DELETE should have indicated 1 deleted row, [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (1 !== $db->exec(sprintf('DELETE FROM test WHERE id = %d', $row['id'])))
+ printf("[007] DELETE should have indicated 1 deleted row, [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
- if (!$db->commit())
- printf("[008] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (!$db->commit())
+ printf("[008] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
- if (1 !== $db->getAttribute(PDO::ATTR_AUTOCOMMIT))
- printf("[009] Autocommit should be on after commit()\n");
+ if (1 !== $db->getAttribute(PDO::ATTR_AUTOCOMMIT))
+ printf("[009] Autocommit should be on after commit()\n");
- if (!($stmt = $db->query(sprintf('SELECT id, label FROM test WHERE id = %d', $row['id']))))
- printf("[010] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (!($stmt = $db->query(sprintf('SELECT id, label FROM test WHERE id = %d', $row['id']))))
+ printf("[010] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
- var_dump($stmt->fetch(PDO::FETCH_ASSOC));
+ var_dump($stmt->fetch(PDO::FETCH_ASSOC));
- if (!$db->beginTransaction())
- printf("[011] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (!$db->beginTransaction())
+ printf("[011] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
- $db->exec(sprintf("INSERT INTO test(id, label) VALUES (%d, 'z')", $row['id']));
+ $db->exec(sprintf("INSERT INTO test(id, label) VALUES (%d, 'z')", $row['id']));
- if (!($stmt = $db->query(sprintf('SELECT id, label FROM test WHERE id = %d', $row['id']))))
- printf("[012] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (!($stmt = $db->query(sprintf('SELECT id, label FROM test WHERE id = %d', $row['id']))))
+ printf("[012] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
- $new_row1 = $stmt->fetch(PDO::FETCH_ASSOC);
- var_dump($new_row1);
+ $new_row1 = $stmt->fetch(PDO::FETCH_ASSOC);
+ var_dump($new_row1);
- if (!$db->commit())
- printf("[013] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (!$db->commit())
+ printf("[013] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
- if (!($stmt = $db->query(sprintf('SELECT id, label FROM test WHERE id = %d', $row['id']))))
- printf("[014] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (!($stmt = $db->query(sprintf('SELECT id, label FROM test WHERE id = %d', $row['id']))))
+ printf("[014] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
- $new_row2 = $stmt->fetch(PDO::FETCH_ASSOC);
- if ($new_row1 != $new_row2) {
- printf("[015] Results must not differ!\n");
- var_dump($new_row1);
- var_dump($new_row2);
- }
+ $new_row2 = $stmt->fetch(PDO::FETCH_ASSOC);
+ if ($new_row1 != $new_row2) {
+ printf("[015] Results must not differ!\n");
+ var_dump($new_row1);
+ var_dump($new_row2);
+ }
- if (!$db->beginTransaction())
- printf("[016] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (!$db->beginTransaction())
+ printf("[016] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
- if (1 !== $db->exec(sprintf('DELETE FROM test WHERE id = %d', $row['id'])))
- printf("[017] DELETE should have indicated 1 deleted row, [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (1 !== $db->exec(sprintf('DELETE FROM test WHERE id = %d', $row['id'])))
+ printf("[017] DELETE should have indicated 1 deleted row, [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
- if (!$db->rollback())
- printf("[018] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (!$db->rollback())
+ printf("[018] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
- if (1 !== $db->getAttribute(PDO::ATTR_AUTOCOMMIT))
- printf("[019] Autocommit should be on after rollback\n");
+ if (1 !== $db->getAttribute(PDO::ATTR_AUTOCOMMIT))
+ printf("[019] Autocommit should be on after rollback\n");
- if (!($stmt = $db->query(sprintf('SELECT id, label FROM test WHERE id = %d', $row['id']))))
- printf("[020] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (!($stmt = $db->query(sprintf('SELECT id, label FROM test WHERE id = %d', $row['id']))))
+ printf("[020] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
- $new_row2 = $stmt->fetch(PDO::FETCH_ASSOC);
- if ($new_row1 != $new_row2) {
- printf("[021] Results must not differ!\n");
- var_dump($new_row1);
- var_dump($new_row2);
- }
+ $new_row2 = $stmt->fetch(PDO::FETCH_ASSOC);
+ if ($new_row1 != $new_row2) {
+ printf("[021] Results must not differ!\n");
+ var_dump($new_row1);
+ var_dump($new_row2);
+ }
- // now, lets check the server variables
- if (!($stmt = $db->query('SELECT @@autocommit as auto_commit')))
- printf("[022] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
+ // now, lets check the server variables
+ if (!($stmt = $db->query('SELECT @@autocommit as auto_commit')))
+ printf("[022] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
- $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
- if ($tmp['auto_commit'] != 1)
- printf("[023] MySQL Server should indicate autocommit mode, expecting 1, got '%s', [%d] %s\n",
- $tmp['auto_commit'], $stmt->errorCode(), $stmt->errorInfo());
+ $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
+ if ($tmp['auto_commit'] != 1)
+ printf("[023] MySQL Server should indicate autocommit mode, expecting 1, got '%s', [%d] %s\n",
+ $tmp['auto_commit'], $stmt->errorCode(), $stmt->errorInfo());
- if (!$db->beginTransaction())
- printf("[024] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (!$db->beginTransaction())
+ printf("[024] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
- if (!($stmt = $db->query('SELECT @@autocommit as auto_commit')))
- printf("[025] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (!($stmt = $db->query('SELECT @@autocommit as auto_commit')))
+ printf("[025] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
- $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
- if ($tmp['auto_commit'] != 0)
- printf("[026] Autocommit mode of the MySQL Server should be off, got '%s', [%d] %s\n",
- $tmp['auto_commit'], $stmt->errorCode(), trim(implode(' ', $stmt->errorInfo())));
+ $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
+ if ($tmp['auto_commit'] != 0)
+ printf("[026] Autocommit mode of the MySQL Server should be off, got '%s', [%d] %s\n",
+ $tmp['auto_commit'], $stmt->errorCode(), trim(implode(' ', $stmt->errorInfo())));
- $db->commit();
- // Now we should be back to autocommit - we've issues a commit
- if ($tmp['auto_commit'] != 1)
- printf("[027] MySQL Server should indicate autocommit mode, expecting 1, got '%s', [%d] %s\n",
- $tmp['auto_commit'], $stmt->errorCode(), $stmt->errorInfo());
+ $db->commit();
+ // Now we should be back to autocommit - we've issues a commit
+ if ($tmp['auto_commit'] != 1)
+ printf("[027] MySQL Server should indicate autocommit mode, expecting 1, got '%s', [%d] %s\n",
+ $tmp['auto_commit'], $stmt->errorCode(), $stmt->errorInfo());
- // Turn off autocommit using a server variable
- $db->exec('SET @@autocommit = 0');
- if (1 === $db->getAttribute(PDO::ATTR_AUTOCOMMIT))
- printf("[028] I'm confused, how can autocommit be on? Didn't I say I want to manually control transactions?\n");
+ // Turn off autocommit using a server variable
+ $db->exec('SET @@autocommit = 0');
+ if (1 === $db->getAttribute(PDO::ATTR_AUTOCOMMIT))
+ printf("[028] I'm confused, how can autocommit be on? Didn't I say I want to manually control transactions?\n");
- if (!$db->beginTransaction())
- printf("[029] Cannot start a transaction, [%d] %s\n",
- $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (!$db->beginTransaction())
+ printf("[029] Cannot start a transaction, [%d] %s\n",
+ $db->errorCode(), implode(' ', $db->errorInfo()));
- try {
- if (false !== $db->beginTransaction()) {
- printf("[030] No false and no exception - that's wrong.\n");
- }
- } catch (PDOException $e) {
- assert($e->getMessage() != '');
- }
+ try {
+ if (false !== $db->beginTransaction()) {
+ printf("[030] No false and no exception - that's wrong.\n");
+ }
+ } catch (PDOException $e) {
+ assert($e->getMessage() != '');
+ }
- // TODO: What about an engine that does not support transactions?
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db, 'MyISAM');
+ // TODO: What about an engine that does not support transactions?
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db, 'MyISAM');
- if (false == $db->beginTransaction())
- printf("[031] Cannot start a transaction, [%s] [%s]\n",
- $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (false == $db->beginTransaction())
+ printf("[031] Cannot start a transaction, [%s] [%s]\n",
+ $db->errorCode(), implode(' ', $db->errorInfo()));
- if (1 !== $db->getAttribute(PDO::ATTR_AUTOCOMMIT))
- printf("[032] Autocommit should be on my default, beginTransaction() should not change that\n");
+ if (1 !== $db->getAttribute(PDO::ATTR_AUTOCOMMIT))
+ printf("[032] Autocommit should be on my default, beginTransaction() should not change that\n");
- if (0 == $db->exec('DELETE FROM test'))
- printf("[033] No rows deleted, can't be true.\n");
+ if (0 == $db->exec('DELETE FROM test'))
+ printf("[033] No rows deleted, can't be true.\n");
- if (!$db->commit())
- printf("[034] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (!$db->commit())
+ printf("[034] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
- if (false == $db->beginTransaction())
- printf("[035] Cannot start a transaction, [%s] [%s]\n",
- $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (false == $db->beginTransaction())
+ printf("[035] Cannot start a transaction, [%s] [%s]\n",
+ $db->errorCode(), implode(' ', $db->errorInfo()));
- if (0 == $db->exec("INSERT INTO test(id, label) VALUES (1, 'a')"))
- printf("[036] Cannot insert data, [%s] [%s]\n",
- $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (0 == $db->exec("INSERT INTO test(id, label) VALUES (1, 'a')"))
+ printf("[036] Cannot insert data, [%s] [%s]\n",
+ $db->errorCode(), implode(' ', $db->errorInfo()));
- // Should cause a Server warning but no error
- if (!$db->rollback())
- printf("[037] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
+ // Should cause a Server warning but no error
+ if (!$db->rollback())
+ printf("[037] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
- var_dump($db->errorCode());
+ var_dump($db->errorCode());
- if (1 != $db->exec('DELETE FROM test'))
- printf("[038] No rows deleted, can't be true.\n");
+ if (1 != $db->exec('DELETE FROM test'))
+ printf("[038] No rows deleted, can't be true.\n");
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_bit.phpt b/ext/pdo_mysql/tests/pdo_mysql_bit.phpt
index caa81e96ac..9e53f18154 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_bit.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_bit.phpt
@@ -10,42 +10,42 @@ if (MySQLPDOTest::isPDOMySQLnd())
?>
--FILE--
<?php
- /* TODO: remove this test after fix and enable the BIT test in pdo_mysql_types.phpt again */
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ /* TODO: remove this test after fix and enable the BIT test in pdo_mysql_types.phpt again */
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- function test_type(&$db, $offset, $sql_type, $value, $ret_value = NULL, $pattern = NULL) {
+ function test_type(&$db, $offset, $sql_type, $value, $ret_value = NULL, $pattern = NULL) {
- $db->exec('DROP TABLE IF EXISTS test');
- $sql = sprintf('CREATE TABLE test(id INT, label %s) ENGINE=%s', $sql_type, MySQLPDOTest::getTableEngine());
- @$db->exec($sql);
- if ($db->errorCode() != 0) {
- // not all MySQL Server versions and/or engines might support the type
- return true;
- }
+ $db->exec('DROP TABLE IF EXISTS test');
+ $sql = sprintf('CREATE TABLE test(id INT, label %s) ENGINE=%s', $sql_type, MySQLPDOTest::getTableEngine());
+ @$db->exec($sql);
+ if ($db->errorCode() != 0) {
+ // not all MySQL Server versions and/or engines might support the type
+ return true;
+ }
- $stmt = $db->prepare('INSERT INTO test(id, label) VALUES (?, ?)');
- $stmt->bindValue(1, $offset);
- $stmt->bindValue(2, $value);
- if (!$stmt->execute()) {
- printf("[%03d + 1] INSERT failed, %s\n", $offset, var_export($stmt->errorInfo(), true));
- return false;
- }
- $stmt = $db->query('SELECT id, label FROM test');
- $row = $stmt->fetch(PDO::FETCH_ASSOC);
- var_dump($row);
- var_dump($value);
+ $stmt = $db->prepare('INSERT INTO test(id, label) VALUES (?, ?)');
+ $stmt->bindValue(1, $offset);
+ $stmt->bindValue(2, $value);
+ if (!$stmt->execute()) {
+ printf("[%03d + 1] INSERT failed, %s\n", $offset, var_export($stmt->errorInfo(), true));
+ return false;
+ }
+ $stmt = $db->query('SELECT id, label FROM test');
+ $row = $stmt->fetch(PDO::FETCH_ASSOC);
+ var_dump($row);
+ var_dump($value);
- return true;
- }
+ return true;
+ }
- $db = MySQLPDOTest::factory();
- $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
- $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
+ $db = MySQLPDOTest::factory();
+ $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
+ $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
- test_type($db, 20, 'BIT(8)', 1);
+ test_type($db, 20, 'BIT(8)', 1);
- echo "done!\n";
+ echo "done!\n";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_class_constants.phpt b/ext/pdo_mysql/tests/pdo_mysql_class_constants.phpt
index 05f3151e8b..e5809c5a76 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_class_constants.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_class_constants.phpt
@@ -11,95 +11,95 @@ if (!extension_loaded('mysqli') && !extension_loaded('mysqlnd')) {
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $expected = array(
- 'MYSQL_ATTR_USE_BUFFERED_QUERY' => true,
- 'MYSQL_ATTR_LOCAL_INFILE' => true,
- 'MYSQL_ATTR_DIRECT_QUERY' => true,
- 'MYSQL_ATTR_FOUND_ROWS' => true,
- 'MYSQL_ATTR_IGNORE_SPACE' => true,
- 'MYSQL_ATTR_INIT_COMMAND' => true,
- "MYSQL_ATTR_SSL_KEY" => true,
- "MYSQL_ATTR_SSL_CERT" => true,
- "MYSQL_ATTR_SSL_CA" => true,
- "MYSQL_ATTR_SSL_CAPATH" => true,
- "MYSQL_ATTR_SSL_CIPHER" => true,
- "MYSQL_ATTR_COMPRESS" => true,
- "MYSQL_ATTR_MULTI_STATEMENTS" => true,
- "MYSQL_ATTR_SSL_VERIFY_SERVER_CERT" => true,
- );
+ $expected = array(
+ 'MYSQL_ATTR_USE_BUFFERED_QUERY' => true,
+ 'MYSQL_ATTR_LOCAL_INFILE' => true,
+ 'MYSQL_ATTR_DIRECT_QUERY' => true,
+ 'MYSQL_ATTR_FOUND_ROWS' => true,
+ 'MYSQL_ATTR_IGNORE_SPACE' => true,
+ 'MYSQL_ATTR_INIT_COMMAND' => true,
+ "MYSQL_ATTR_SSL_KEY" => true,
+ "MYSQL_ATTR_SSL_CERT" => true,
+ "MYSQL_ATTR_SSL_CA" => true,
+ "MYSQL_ATTR_SSL_CAPATH" => true,
+ "MYSQL_ATTR_SSL_CIPHER" => true,
+ "MYSQL_ATTR_COMPRESS" => true,
+ "MYSQL_ATTR_MULTI_STATEMENTS" => true,
+ "MYSQL_ATTR_SSL_VERIFY_SERVER_CERT" => true,
+ );
- if (!MySQLPDOTest::isPDOMySQLnd()) {
- $expected['MYSQL_ATTR_MAX_BUFFER_SIZE'] = true;
- $expected['MYSQL_ATTR_READ_DEFAULT_FILE'] = true;
- $expected['MYSQL_ATTR_READ_DEFAULT_GROUP'] = true;
- }
+ if (!MySQLPDOTest::isPDOMySQLnd()) {
+ $expected['MYSQL_ATTR_MAX_BUFFER_SIZE'] = true;
+ $expected['MYSQL_ATTR_READ_DEFAULT_FILE'] = true;
+ $expected['MYSQL_ATTR_READ_DEFAULT_GROUP'] = true;
+ }
- if (extension_loaded('mysqlnd')) {
- $expected['MYSQL_ATTR_SERVER_PUBLIC_KEY'] = true;
- } else if (extension_loaded('mysqli')) {
- if (mysqli_get_client_version() > 50605) {
- $expected['MYSQL_ATTR_SERVER_PUBLIC_KEY'] = true;
- }
- } else if (MySQLPDOTest::getClientVersion(MySQLPDOTest::factory()) > 50605) {
- /* XXX the MySQL client library version isn't exposed with any
- constants, the single possibility is to use the PDO::getAttribute().
- This however will fail with no connection. */
- $expected['MYSQL_ATTR_SERVER_PUBLIC_KEY'] = true;
- }
+ if (extension_loaded('mysqlnd')) {
+ $expected['MYSQL_ATTR_SERVER_PUBLIC_KEY'] = true;
+ } else if (extension_loaded('mysqli')) {
+ if (mysqli_get_client_version() > 50605) {
+ $expected['MYSQL_ATTR_SERVER_PUBLIC_KEY'] = true;
+ }
+ } else if (MySQLPDOTest::getClientVersion(MySQLPDOTest::factory()) > 50605) {
+ /* XXX the MySQL client library version isn't exposed with any
+ constants, the single possibility is to use the PDO::getAttribute().
+ This however will fail with no connection. */
+ $expected['MYSQL_ATTR_SERVER_PUBLIC_KEY'] = true;
+ }
- /*
- TODO
+ /*
+ TODO
- MYSQLI_OPT_CONNECT_TIMEOUT != PDO::ATTR_TIMEOUT (integer)
+ MYSQLI_OPT_CONNECT_TIMEOUT != PDO::ATTR_TIMEOUT (integer)
Sets the timeout value in seconds for communications with the database.
- ^ Potential BUG, PDO::ATTR_TIMEOUT is used in pdo_mysql_handle_factory
+ ^ Potential BUG, PDO::ATTR_TIMEOUT is used in pdo_mysql_handle_factory
- MYSQLI_SET_CHARSET_NAME -> DSN/charset=<charset_name>
- ^ Undocumented and pitfall for ext/mysqli users
+ MYSQLI_SET_CHARSET_NAME -> DSN/charset=<charset_name>
+ ^ Undocumented and pitfall for ext/mysqli users
- Assorted mysqlnd settings missing
- */
- $ref = new ReflectionClass('PDO');
- $constants = $ref->getConstants();
- $values = array();
+ Assorted mysqlnd settings missing
+ */
+ $ref = new ReflectionClass('PDO');
+ $constants = $ref->getConstants();
+ $values = array();
- foreach ($constants as $name => $value)
- if (substr($name, 0, 11) == 'MYSQL_ATTR_') {
- if (!isset($values[$value]))
- $values[$value] = array($name);
- else
- $values[$value][] = $name;
+ foreach ($constants as $name => $value)
+ if (substr($name, 0, 11) == 'MYSQL_ATTR_') {
+ if (!isset($values[$value]))
+ $values[$value] = array($name);
+ else
+ $values[$value][] = $name;
- if (isset($expected[$name])) {
- unset($expected[$name]);
- unset($constants[$name]);
- }
+ if (isset($expected[$name])) {
+ unset($expected[$name]);
+ unset($constants[$name]);
+ }
- } else {
- unset($constants[$name]);
- }
+ } else {
+ unset($constants[$name]);
+ }
- if (!empty($constants)) {
- printf("[001] Dumping list of unexpected constants\n");
- var_dump($constants);
- }
+ if (!empty($constants)) {
+ printf("[001] Dumping list of unexpected constants\n");
+ var_dump($constants);
+ }
- if (!empty($expected)) {
- printf("[002] Dumping list of missing constants\n");
- var_dump($expected);
- }
+ if (!empty($expected)) {
+ printf("[002] Dumping list of missing constants\n");
+ var_dump($expected);
+ }
- if (!empty($values)) {
- foreach ($values as $value => $constants) {
- if (count($constants) > 1) {
- printf("[003] Several constants share the same value '%s'\n", $value);
- var_dump($constants);
- }
- }
- }
+ if (!empty($values)) {
+ foreach ($values as $value => $constants) {
+ if (count($constants) > 1) {
+ printf("[003] Several constants share the same value '%s'\n", $value);
+ var_dump($constants);
+ }
+ }
+ }
- print "done!";
+ print "done!";
--EXPECT--
done!
diff --git a/ext/pdo_mysql/tests/pdo_mysql_commit.phpt b/ext/pdo_mysql/tests/pdo_mysql_commit.phpt
index 6141ff611b..9dec5700b6 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_commit.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_commit.phpt
@@ -11,74 +11,74 @@ if (false == MySQLPDOTest::detect_transactional_mysql_engine($db))
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
- try {
- if (true !== ($tmp = $db->beginTransaction())) {
- printf("[001] Expecting true, got %s/%s\n", gettype($tmp), $tmp);
- }
+ try {
+ if (true !== ($tmp = $db->beginTransaction())) {
+ printf("[001] Expecting true, got %s/%s\n", gettype($tmp), $tmp);
+ }
- // DDL will issue an implicit commit
- $db->exec(sprintf('DROP TABLE IF EXISTS test_commit'));
- $db->exec(sprintf('CREATE TABLE test_commit(id INT) ENGINE=%s', MySQLPDOTest::detect_transactional_mysql_engine($db)));
- if (true !== ($tmp = $db->commit())) {
- printf("[002] No commit allowed? [%s] %s\n",
- $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ // DDL will issue an implicit commit
+ $db->exec(sprintf('DROP TABLE IF EXISTS test_commit'));
+ $db->exec(sprintf('CREATE TABLE test_commit(id INT) ENGINE=%s', MySQLPDOTest::detect_transactional_mysql_engine($db)));
+ if (true !== ($tmp = $db->commit())) {
+ printf("[002] No commit allowed? [%s] %s\n",
+ $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- // pdo_transaction_transitions should check this as well...
- // ... just to be sure the most basic stuff really works we check it again...
- if (1 !== ($tmp = $db->getAttribute(PDO::ATTR_AUTOCOMMIT)))
- printf("[003] According to the manual we should be back to autocommit mode, got %s/%s\n",
- gettype($tmp), var_export($tmp, true));
+ // pdo_transaction_transitions should check this as well...
+ // ... just to be sure the most basic stuff really works we check it again...
+ if (1 !== ($tmp = $db->getAttribute(PDO::ATTR_AUTOCOMMIT)))
+ printf("[003] According to the manual we should be back to autocommit mode, got %s/%s\n",
+ gettype($tmp), var_export($tmp, true));
- if (true !== ($tmp = $db->beginTransaction()))
- printf("[004] Expecting true, got %s/%s\n", gettype($tmp), $tmp);
+ if (true !== ($tmp = $db->beginTransaction()))
+ printf("[004] Expecting true, got %s/%s\n", gettype($tmp), $tmp);
- $db->exec("INSERT INTO test(id, label) VALUES (100, 'z')");
+ $db->exec("INSERT INTO test(id, label) VALUES (100, 'z')");
- if (true !== ($tmp = $db->commit()))
- printf("[005] No commit allowed? [%s] %s\n",
- $db->errorCode(), implode(' ', $db->errorInfo()));
+ if (true !== ($tmp = $db->commit()))
+ printf("[005] No commit allowed? [%s] %s\n",
+ $db->errorCode(), implode(' ', $db->errorInfo()));
- // a weak test without unicode etc. - lets leave that to dedicated tests
- $stmt = $db->query('SELECT id, label FROM test WHERE id = 100');
- $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
- if (!isset($rows[0]['label']) || ($rows[0]['label'] != 'z')) {
- printf("[006] Record data is strange, dumping rows\n");
- var_dump($rows);
- }
+ // a weak test without unicode etc. - lets leave that to dedicated tests
+ $stmt = $db->query('SELECT id, label FROM test WHERE id = 100');
+ $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
+ if (!isset($rows[0]['label']) || ($rows[0]['label'] != 'z')) {
+ printf("[006] Record data is strange, dumping rows\n");
+ var_dump($rows);
+ }
- // Ok, lets check MyISAM resp. any other non-transactional engine
- // pdo_mysql_begin_transaction has more on this, quick check only
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db, 'MyISAM');
+ // Ok, lets check MyISAM resp. any other non-transactional engine
+ // pdo_mysql_begin_transaction has more on this, quick check only
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db, 'MyISAM');
- if (true !== ($tmp = $db->beginTransaction()))
- printf("[007] Expecting true, got %s/%s\n", gettype($tmp), $tmp);
+ if (true !== ($tmp = $db->beginTransaction()))
+ printf("[007] Expecting true, got %s/%s\n", gettype($tmp), $tmp);
- $db->exec("INSERT INTO test(id, label) VALUES (100, 'z')");
- if (true !== ($tmp = $db->commit()))
- printf("[008] No commit allowed? [%s] %s\n",
- $db->errorCode(), implode(' ', $db->errorInfo()));
+ $db->exec("INSERT INTO test(id, label) VALUES (100, 'z')");
+ if (true !== ($tmp = $db->commit()))
+ printf("[008] No commit allowed? [%s] %s\n",
+ $db->errorCode(), implode(' ', $db->errorInfo()));
- // a weak test without unicode etc. - lets leave that to dedicated tests
- $stmt = $db->query('SELECT id, label FROM test WHERE id = 100');
- $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
- if (!isset($rows[0]['label']) || ($rows[0]['label'] != 'z')) {
- printf("[009] Record data is strange, dumping rows\n");
- var_dump($rows);
- }
+ // a weak test without unicode etc. - lets leave that to dedicated tests
+ $stmt = $db->query('SELECT id, label FROM test WHERE id = 100');
+ $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
+ if (!isset($rows[0]['label']) || ($rows[0]['label'] != 'z')) {
+ printf("[009] Record data is strange, dumping rows\n");
+ var_dump($rows);
+ }
- } catch (PDOException $e) {
- printf("[002] %s, [%s] %s\n",
- $e->getMessage(),
- $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[002] %s, [%s] %s\n",
+ $e->getMessage(),
+ $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- print "done!";
+ print "done!";
--CLEAN--
<?php
require __DIR__ . '/mysql_pdo_test.inc';
diff --git a/ext/pdo_mysql/tests/pdo_mysql_connect_charset.phpt b/ext/pdo_mysql/tests/pdo_mysql_connect_charset.phpt
index 84ce556d32..294d45e586 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_connect_charset.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_connect_charset.phpt
@@ -8,26 +8,26 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- /* Connect to mysql to determine the current charset so we can diffinate it */
- $link = MySQLPDOTest::factory();
- $charset = $link->query("SHOW VARIABLES LIKE 'character_set_connection'")->fetchObject()->value;
+ /* Connect to mysql to determine the current charset so we can diffinate it */
+ $link = MySQLPDOTest::factory();
+ $charset = $link->query("SHOW VARIABLES LIKE 'character_set_connection'")->fetchObject()->value;
- /* Make sure that we don't attempt to set the current character set to make this case useful */
- $new_charset = ($charset == 'latin1' ? 'ascii' : 'latin1');
+ /* Make sure that we don't attempt to set the current character set to make this case useful */
+ $new_charset = ($charset == 'latin1' ? 'ascii' : 'latin1');
- /* Done with the original connection, create a second link to test the character set being defined */
- unset($link);
+ /* Done with the original connection, create a second link to test the character set being defined */
+ unset($link);
- $link = MySQLPDOTest::factory('PDO', false, null, Array('charset' => $new_charset));
- $conn_charset = $link->query("SHOW VARIABLES LIKE 'character_set_connection'")->fetchObject()->value;
+ $link = MySQLPDOTest::factory('PDO', false, null, Array('charset' => $new_charset));
+ $conn_charset = $link->query("SHOW VARIABLES LIKE 'character_set_connection'")->fetchObject()->value;
- if ($charset !== $conn_charset) {
- echo "done!\n";
- } else {
- echo "failed!\n";
- }
+ if ($charset !== $conn_charset) {
+ echo "done!\n";
+ } else {
+ echo "failed!\n";
+ }
?>
--EXPECT--
done!
diff --git a/ext/pdo_mysql/tests/pdo_mysql_errorcode.phpt b/ext/pdo_mysql/tests/pdo_mysql_errorcode.phpt
index 5bf6c10448..c2b07100c0 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_errorcode.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_errorcode.phpt
@@ -9,73 +9,73 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db);
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db);
- function check_error($offset, &$obj, $expected = '00000') {
+ function check_error($offset, &$obj, $expected = '00000') {
- $code = $obj->errorCode();
- if (($code != $expected) && (($expected != '00000') && ($code != ''))) {
- printf("[%03d] Expecting error code '%s' got code '%s'\n",
- $offset, $expected, $code);
- }
+ $code = $obj->errorCode();
+ if (($code != $expected) && (($expected != '00000') && ($code != ''))) {
+ printf("[%03d] Expecting error code '%s' got code '%s'\n",
+ $offset, $expected, $code);
+ }
- }
+ }
- try {
+ try {
- /*
- If you create a PDOStatement object through PDO->prepare()
- or PDO->query() and invoke an error on the statement handle,
- PDO->errorCode() will not reflect that error. You must call
- PDOStatement->errorCode() to return the error code for an
- operation performed on a particular statement handle.
- */
- $code = $db->errorCode();
- check_error(2, $db);
+ /*
+ If you create a PDOStatement object through PDO->prepare()
+ or PDO->query() and invoke an error on the statement handle,
+ PDO->errorCode() will not reflect that error. You must call
+ PDOStatement->errorCode() to return the error code for an
+ operation performed on a particular statement handle.
+ */
+ $code = $db->errorCode();
+ check_error(2, $db);
- $stmt = $db->query('SELECT id, label FROM test');
- $stmt2 = &$stmt;
- check_error(3, $db);
- check_error(4, $stmt);
+ $stmt = $db->query('SELECT id, label FROM test');
+ $stmt2 = &$stmt;
+ check_error(3, $db);
+ check_error(4, $stmt);
- $db->exec('DROP TABLE IF EXISTS test');
- @$stmt->execute();
- check_error(4, $db);
- check_error(5, $stmt, '42S02');
- check_error(6, $stmt2, '42S02');
+ $db->exec('DROP TABLE IF EXISTS test');
+ @$stmt->execute();
+ check_error(4, $db);
+ check_error(5, $stmt, '42S02');
+ check_error(6, $stmt2, '42S02');
- $db->exec('DROP TABLE IF EXISTS unknown');
- @$stmt = $db->query('SELECT id, label FROM unknown');
- check_error(7, $db, '42S02');
+ $db->exec('DROP TABLE IF EXISTS unknown');
+ @$stmt = $db->query('SELECT id, label FROM unknown');
+ check_error(7, $db, '42S02');
- MySQLPDOTest::createTestTable($db);
- $stmt = $db->query('SELECT id, label FROM test');
- check_error(8, $db);
- check_error(9, $stmt);
+ MySQLPDOTest::createTestTable($db);
+ $stmt = $db->query('SELECT id, label FROM test');
+ check_error(8, $db);
+ check_error(9, $stmt);
- $db2 = &$db;
- @$db->query('SELECT id, label FROM unknown');
- check_error(10, $db, '42S02');
- check_error(11, $db2, '42S02');
- check_error(12, $stmt);
- check_error(13, $stmt2);
+ $db2 = &$db;
+ @$db->query('SELECT id, label FROM unknown');
+ check_error(10, $db, '42S02');
+ check_error(11, $db2, '42S02');
+ check_error(12, $stmt);
+ check_error(13, $stmt2);
- // lets hope this is an invalid attribute code
- $invalid_attr = -1 * PHP_INT_MAX + 3;
- $tmp = @$db->getAttribute($invalid_attr);
- check_error(14, $db, 'IM001');
- check_error(15, $db2, 'IM001');
- check_error(16, $stmt);
- check_error(17, $stmt2);
+ // lets hope this is an invalid attribute code
+ $invalid_attr = -1 * PHP_INT_MAX + 3;
+ $tmp = @$db->getAttribute($invalid_attr);
+ check_error(14, $db, 'IM001');
+ check_error(15, $db2, 'IM001');
+ check_error(16, $stmt);
+ check_error(17, $stmt2);
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_errorinfo.phpt b/ext/pdo_mysql/tests/pdo_mysql_errorinfo.phpt
index 487f8ab97a..2da0f4aaa3 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_errorinfo.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_errorinfo.phpt
@@ -9,92 +9,92 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db);
-
- function check_error($offset, &$obj, $expected = '00000') {
- $info = $obj->errorInfo();
- $code = $info[0];
-
- if (($code != $expected) && (($expected != '00000') && ($code != ''))) {
- printf("[%03d] Expecting error code '%s' got code '%s'\n",
- $offset, $expected, $code);
- }
-
- if ($expected != '00000') {
- if (!isset($info[1]) || $info[1] == '')
- printf("[%03d] Driver-specific error code not set\n", $offset);
- if (!isset($info[2]) || $info[2] == '')
- printf("[%03d] Driver-specific error message.not set\n", $offset);
- }
-
- }
-
- function pdo_mysql_errorinfo($db, $offset) {
-
- try {
-
- /*
- If you create a PDOStatement object through PDO->prepare()
- or PDO->query() and invoke an error on the statement handle,
- PDO->errorCode() will not reflect that error. You must call
- PDOStatement->errorCode() to return the error code for an
- operation performed on a particular statement handle.
- */
- $code = $db->errorCode();
- check_error($offset + 2, $db);
-
- $stmt = $db->query('SELECT id, label FROM test');
- $stmt2 = &$stmt;
- check_error($offset + 3, $db);
- check_error($offset + 4, $stmt);
-
- $db->exec('DROP TABLE IF EXISTS test');
- @$stmt->execute();
- check_error($offset + 5, $db);
- check_error($offset + 6, $stmt, '42S02');
- check_error($offset + 7, $stmt2, '42S02');
-
- @$stmt = $db->query('SELECT id, label FROM unknown');
- check_error($offset + 8, $db, '42S02');
-
- MySQLPDOTest::createTestTable($db);
- $stmt = $db->query('SELECT id, label FROM test');
- check_error($offset + 9, $db);
- check_error($offset + 10, $stmt);
-
- $db2 = &$db;
- $db->exec('DROP TABLE IF EXISTS unknown');
- @$db->query('SELECT id, label FROM unknown');
- check_error($offset + 11, $db, '42S02');
- check_error($offset + 12, $db2, '42S02');
- check_error($offset + 13, $stmt);
- check_error($offset + 14, $stmt2);
-
- // lets hope this is an invalid attribute code
- $invalid_attr = -1 * PHP_INT_MAX + 3;
- $tmp = @$db->getAttribute($invalid_attr);
- check_error($offset + 15, $db, 'IM001');
- check_error($offset + 16, $db2, 'IM001');
- check_error($offset + 17, $stmt);
- check_error($offset + 18, $stmt2);
-
- } catch (PDOException $e) {
- printf("[%03d] %s [%s] %s\n",
- $offset + 19, $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
- }
-
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
- printf("Emulated Prepared Statements...\n");
- pdo_mysql_errorinfo($db, 0);
-
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
- printf("Native Prepared Statements...\n");
- pdo_mysql_errorinfo($db, 20);
-
- print "done!";
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db);
+
+ function check_error($offset, &$obj, $expected = '00000') {
+ $info = $obj->errorInfo();
+ $code = $info[0];
+
+ if (($code != $expected) && (($expected != '00000') && ($code != ''))) {
+ printf("[%03d] Expecting error code '%s' got code '%s'\n",
+ $offset, $expected, $code);
+ }
+
+ if ($expected != '00000') {
+ if (!isset($info[1]) || $info[1] == '')
+ printf("[%03d] Driver-specific error code not set\n", $offset);
+ if (!isset($info[2]) || $info[2] == '')
+ printf("[%03d] Driver-specific error message.not set\n", $offset);
+ }
+
+ }
+
+ function pdo_mysql_errorinfo($db, $offset) {
+
+ try {
+
+ /*
+ If you create a PDOStatement object through PDO->prepare()
+ or PDO->query() and invoke an error on the statement handle,
+ PDO->errorCode() will not reflect that error. You must call
+ PDOStatement->errorCode() to return the error code for an
+ operation performed on a particular statement handle.
+ */
+ $code = $db->errorCode();
+ check_error($offset + 2, $db);
+
+ $stmt = $db->query('SELECT id, label FROM test');
+ $stmt2 = &$stmt;
+ check_error($offset + 3, $db);
+ check_error($offset + 4, $stmt);
+
+ $db->exec('DROP TABLE IF EXISTS test');
+ @$stmt->execute();
+ check_error($offset + 5, $db);
+ check_error($offset + 6, $stmt, '42S02');
+ check_error($offset + 7, $stmt2, '42S02');
+
+ @$stmt = $db->query('SELECT id, label FROM unknown');
+ check_error($offset + 8, $db, '42S02');
+
+ MySQLPDOTest::createTestTable($db);
+ $stmt = $db->query('SELECT id, label FROM test');
+ check_error($offset + 9, $db);
+ check_error($offset + 10, $stmt);
+
+ $db2 = &$db;
+ $db->exec('DROP TABLE IF EXISTS unknown');
+ @$db->query('SELECT id, label FROM unknown');
+ check_error($offset + 11, $db, '42S02');
+ check_error($offset + 12, $db2, '42S02');
+ check_error($offset + 13, $stmt);
+ check_error($offset + 14, $stmt2);
+
+ // lets hope this is an invalid attribute code
+ $invalid_attr = -1 * PHP_INT_MAX + 3;
+ $tmp = @$db->getAttribute($invalid_attr);
+ check_error($offset + 15, $db, 'IM001');
+ check_error($offset + 16, $db2, 'IM001');
+ check_error($offset + 17, $stmt);
+ check_error($offset + 18, $stmt2);
+
+ } catch (PDOException $e) {
+ printf("[%03d] %s [%s] %s\n",
+ $offset + 19, $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
+ }
+
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
+ printf("Emulated Prepared Statements...\n");
+ pdo_mysql_errorinfo($db, 0);
+
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
+ printf("Native Prepared Statements...\n");
+ pdo_mysql_errorinfo($db, 20);
+
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_exec.phpt b/ext/pdo_mysql/tests/pdo_mysql_exec.phpt
index 71d93815ff..c6f3d54ddd 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_exec.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_exec.phpt
@@ -8,169 +8,169 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- function exec_and_count($offset, &$db, $sql, $exp = NULL) {
-
- try {
-
- $ret = $db->exec($sql);
- if (!is_null($exp) && ($ret !== $exp)) {
- printf("[%03d] Expecting '%s'/%s got '%s'/%s when running '%s', [%s] %s\n",
- $offset, $exp, gettype($exp), $ret, gettype($ret), $sql,
- $db->errorCode(), implode(' ', $db->errorInfo()));
- return false;
- }
-
- } catch (PDOException $e) {
- printf("[%03d] '%s' has failed, [%s] %s\n",
- $offset, $sql, $db->errorCode(), implode(' ', $db->errorInfo()));
- return false;
- }
-
- return true;
- }
-
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
-
- /* affected rows related */
- try {
-
- exec_and_count(2, $db, 'DROP TABLE IF EXISTS test', 0);
- exec_and_count(3, $db, sprintf('CREATE TABLE test(id INT NOT NULL PRIMARY KEY, col1 CHAR(10)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE), 0);
- exec_and_count(4, $db, "INSERT INTO test(id, col1) VALUES (1, 'a')", 1);
- exec_and_count(5, $db, "INSERT INTO test(id, col1) VALUES (2, 'b'), (3, 'c')", 2);
- exec_and_count(6, $db, "UPDATE test SET id = 4 WHERE id = 3", 1);
- exec_and_count(7, $db, "INSERT INTO test(id, col1) VALUES (1, 'd') ON DUPLICATE KEY UPDATE id = 3", 2);
- exec_and_count(8, $db, "UPDATE test SET id = 5 WHERE id = 5", 0);
- exec_and_count(9, $db, "INSERT INTO test(id, col1) VALUES (5, 'e') ON DUPLICATE KEY UPDATE id = 6", 1);
- exec_and_count(10, $db, "REPLACE INTO test(id, col1) VALUES (5, 'f')", 2);
- exec_and_count(11, $db, "REPLACE INTO test(id, col1) VALUES (6, 'g')", 1);
- exec_and_count(12, $db, 'DELETE FROM test WHERE id > 2', 4);
- exec_and_count(13, $db, 'DROP TABLE test', 0);
- exec_and_count(14, $db, 'SET @myvar = 1', 0);
-
- exec_and_count(15, $db, 'THIS IS NOT VALID SQL, I HOPE', false);
- printf("[016] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
-
- exec_and_count(36, $db, sprintf('CREATE TABLE test(id INT NOT NULL PRIMARY KEY, col1 CHAR(10)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE), 0);
- exec_and_count(37, $db, "INSERT INTO test(id, col1) VALUES (1, 'a')", 1);
- // Results may vary. Typically you will get 1. But the MySQL 5.1 manual states: Truncation operations do not return the number of deleted rows.
- // Don't rely on any return value!
- exec_and_count(38, $db, 'TRUNCATE TABLE test', NULL);
-
- } catch (PDOException $e) {
- printf("[001] %s, [%s] %s\n",
- $e->getMessage(),
- $db->errorCode(), implode(' ', $db->errorInfo()));
- }
-
-
- /* CREATE, DROP, CALL SP and SF */
- if (MySQLPDOTest::getServerVersion($db) > 50000) {
- // let's try to play with stored procedures
- try {
- $ignore_exception = true;
- exec_and_count(18, $db, 'DROP PROCEDURE IF EXISTS p', 0);
- exec_and_count(19, $db, 'CREATE PROCEDURE p(OUT ver_param VARCHAR(255)) BEGIN SELECT VERSION() INTO ver_param; END;', 0);
- // we got this far without problems. If there's an issue from now on, its a failure
- $ignore_exception = false;
- exec_and_count(20, $db, 'CALL p(@version)', 1);
- $stmt = $db->query('SELECT @version AS p_version');
- $tmp = $stmt->fetchAll(PDO::FETCH_ASSOC);
- if (count($tmp) > 1 || !isset($tmp[0]['p_version'])) {
- printf("[022] Data seems wrong, dumping\n");
- var_dump($tmp);
- } else {
- $p_version = $tmp[0]['p_version'];
- }
-
- $stmt = $db->query('SELECT VERSION() AS _version');
- $tmp = $stmt->fetchAll(PDO::FETCH_ASSOC);
- if (count($tmp) > 1 || !isset($tmp[0]['_version'])) {
- printf("[023] Data seems wrong, dumping\n");
- var_dump($tmp);
- } else {
- if ($p_version !== $tmp[0]['_version']) {
- printf("[024] Found different version strings, SP returned '%s'/%s, SELECT returned '%s'/%s\n",
- $p_version, gettype($p_version),
- $tmp[0]['_version'], gettype($tmp[0]['_version']));
- }
- }
- exec_and_count(25, $db, 'DROP PROCEDURE IF EXISTS p', 0);
-
- } catch (PDOException $e) {
- // ignore it, we might not have sufficient permissions
- if (!$ignore_exception)
- printf("[021] %s, [%s] %s\n",
- $e->getMessage(),
- $db->errorCode(), implode(' ', $db->errorInfo()));
- }
-
- // stored function
- try {
- $ignore_exception = true;
- exec_and_count(27, $db, 'DROP FUNCTION IF EXISTS f', 0);
- exec_and_count(28, $db, 'CREATE FUNCTION f( ver_param VARCHAR(255)) RETURNS VARCHAR(255) DETERMINISTIC RETURN ver_param;', 0);
- // we got this far without problems. If there's an issue from now on, its a failure
- $ignore_exception = false;
- $stmt = $db->query('SELECT f(VERSION()) AS f_version');
- $tmp = $stmt->fetchAll(PDO::FETCH_ASSOC);
- if (count($tmp) > 1 || !isset($tmp[0]['f_version'])) {
- printf("[029] Data seems wrong, dumping\n");
- var_dump($tmp);
- } else {
- $f_version = $tmp[0]['f_version'];
- }
- $stmt = $db->query('SELECT VERSION() AS _version');
- $tmp = $stmt->fetchAll(PDO::FETCH_ASSOC);
- if (count($tmp) > 1 || !isset($tmp[0]['_version'])) {
- printf("[030] Data seems wrong, dumping\n");
- var_dump($tmp);
- } else {
- if ($f_version !== $tmp[0]['_version']) {
- printf("[031] Found different version strings, SF returned '%s'/%s, SELECT returned '%s'/%s\n",
- $f_version, gettype($f_version),
- $tmp[0]['_version'], gettype($tmp[0]['_version']));
- }
- }
- exec_and_count(32, $db, 'DROP FUNCTION IF EXISTS f', 0);
-
- } catch (PDOException $e) {
- // ignore it, we might not have sufficient permissions
- if (!$ignore_exception)
- printf("[026] %s, [%s] %s\n",
- $e->getMessage(),
- $db->errorCode(), implode(' ', $db->errorInfo()));
- }
- }
-
- // multi query
- try {
-
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
- $exp = 0;
-
- $tmp = @$db->exec(sprintf('DROP TABLE IF EXISTS test; CREATE TABLE test(id INT) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
- if ($exp !== $tmp)
- printf("[034] Expecting %s/%s got %s/%s, [%s] %s\n",
- $exp, gettype($exp),
- $tmp, gettype($tmp),
- $db->errorCode(), var_export($db->errorInfo(), true));
-
- // this is interesting: if we get sort of affected rows, what will happen now?
- $tmp = @$db->exec('INSERT INTO test(id) VALUES (1); INSERT INTO test(id) VALUES (2)');
- printf("[035] With emulated PS it works but makes no sense given that exec() returns sort of affected rows...\n");
-
-
- } catch (PDOException $e) {
- printf("[033] %s, [%s] %s\n",
- $e->getMessage(),
- $db->errorCode(), implode(' ', $db->errorInfo()));
- }
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
-
- print "done!";
+ function exec_and_count($offset, &$db, $sql, $exp = NULL) {
+
+ try {
+
+ $ret = $db->exec($sql);
+ if (!is_null($exp) && ($ret !== $exp)) {
+ printf("[%03d] Expecting '%s'/%s got '%s'/%s when running '%s', [%s] %s\n",
+ $offset, $exp, gettype($exp), $ret, gettype($ret), $sql,
+ $db->errorCode(), implode(' ', $db->errorInfo()));
+ return false;
+ }
+
+ } catch (PDOException $e) {
+ printf("[%03d] '%s' has failed, [%s] %s\n",
+ $offset, $sql, $db->errorCode(), implode(' ', $db->errorInfo()));
+ return false;
+ }
+
+ return true;
+ }
+
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
+
+ /* affected rows related */
+ try {
+
+ exec_and_count(2, $db, 'DROP TABLE IF EXISTS test', 0);
+ exec_and_count(3, $db, sprintf('CREATE TABLE test(id INT NOT NULL PRIMARY KEY, col1 CHAR(10)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE), 0);
+ exec_and_count(4, $db, "INSERT INTO test(id, col1) VALUES (1, 'a')", 1);
+ exec_and_count(5, $db, "INSERT INTO test(id, col1) VALUES (2, 'b'), (3, 'c')", 2);
+ exec_and_count(6, $db, "UPDATE test SET id = 4 WHERE id = 3", 1);
+ exec_and_count(7, $db, "INSERT INTO test(id, col1) VALUES (1, 'd') ON DUPLICATE KEY UPDATE id = 3", 2);
+ exec_and_count(8, $db, "UPDATE test SET id = 5 WHERE id = 5", 0);
+ exec_and_count(9, $db, "INSERT INTO test(id, col1) VALUES (5, 'e') ON DUPLICATE KEY UPDATE id = 6", 1);
+ exec_and_count(10, $db, "REPLACE INTO test(id, col1) VALUES (5, 'f')", 2);
+ exec_and_count(11, $db, "REPLACE INTO test(id, col1) VALUES (6, 'g')", 1);
+ exec_and_count(12, $db, 'DELETE FROM test WHERE id > 2', 4);
+ exec_and_count(13, $db, 'DROP TABLE test', 0);
+ exec_and_count(14, $db, 'SET @myvar = 1', 0);
+
+ exec_and_count(15, $db, 'THIS IS NOT VALID SQL, I HOPE', false);
+ printf("[016] [%s] %s\n", $db->errorCode(), implode(' ', $db->errorInfo()));
+
+ exec_and_count(36, $db, sprintf('CREATE TABLE test(id INT NOT NULL PRIMARY KEY, col1 CHAR(10)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE), 0);
+ exec_and_count(37, $db, "INSERT INTO test(id, col1) VALUES (1, 'a')", 1);
+ // Results may vary. Typically you will get 1. But the MySQL 5.1 manual states: Truncation operations do not return the number of deleted rows.
+ // Don't rely on any return value!
+ exec_and_count(38, $db, 'TRUNCATE TABLE test', NULL);
+
+ } catch (PDOException $e) {
+ printf("[001] %s, [%s] %s\n",
+ $e->getMessage(),
+ $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
+
+
+ /* CREATE, DROP, CALL SP and SF */
+ if (MySQLPDOTest::getServerVersion($db) > 50000) {
+ // let's try to play with stored procedures
+ try {
+ $ignore_exception = true;
+ exec_and_count(18, $db, 'DROP PROCEDURE IF EXISTS p', 0);
+ exec_and_count(19, $db, 'CREATE PROCEDURE p(OUT ver_param VARCHAR(255)) BEGIN SELECT VERSION() INTO ver_param; END;', 0);
+ // we got this far without problems. If there's an issue from now on, its a failure
+ $ignore_exception = false;
+ exec_and_count(20, $db, 'CALL p(@version)', 1);
+ $stmt = $db->query('SELECT @version AS p_version');
+ $tmp = $stmt->fetchAll(PDO::FETCH_ASSOC);
+ if (count($tmp) > 1 || !isset($tmp[0]['p_version'])) {
+ printf("[022] Data seems wrong, dumping\n");
+ var_dump($tmp);
+ } else {
+ $p_version = $tmp[0]['p_version'];
+ }
+
+ $stmt = $db->query('SELECT VERSION() AS _version');
+ $tmp = $stmt->fetchAll(PDO::FETCH_ASSOC);
+ if (count($tmp) > 1 || !isset($tmp[0]['_version'])) {
+ printf("[023] Data seems wrong, dumping\n");
+ var_dump($tmp);
+ } else {
+ if ($p_version !== $tmp[0]['_version']) {
+ printf("[024] Found different version strings, SP returned '%s'/%s, SELECT returned '%s'/%s\n",
+ $p_version, gettype($p_version),
+ $tmp[0]['_version'], gettype($tmp[0]['_version']));
+ }
+ }
+ exec_and_count(25, $db, 'DROP PROCEDURE IF EXISTS p', 0);
+
+ } catch (PDOException $e) {
+ // ignore it, we might not have sufficient permissions
+ if (!$ignore_exception)
+ printf("[021] %s, [%s] %s\n",
+ $e->getMessage(),
+ $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
+
+ // stored function
+ try {
+ $ignore_exception = true;
+ exec_and_count(27, $db, 'DROP FUNCTION IF EXISTS f', 0);
+ exec_and_count(28, $db, 'CREATE FUNCTION f( ver_param VARCHAR(255)) RETURNS VARCHAR(255) DETERMINISTIC RETURN ver_param;', 0);
+ // we got this far without problems. If there's an issue from now on, its a failure
+ $ignore_exception = false;
+ $stmt = $db->query('SELECT f(VERSION()) AS f_version');
+ $tmp = $stmt->fetchAll(PDO::FETCH_ASSOC);
+ if (count($tmp) > 1 || !isset($tmp[0]['f_version'])) {
+ printf("[029] Data seems wrong, dumping\n");
+ var_dump($tmp);
+ } else {
+ $f_version = $tmp[0]['f_version'];
+ }
+ $stmt = $db->query('SELECT VERSION() AS _version');
+ $tmp = $stmt->fetchAll(PDO::FETCH_ASSOC);
+ if (count($tmp) > 1 || !isset($tmp[0]['_version'])) {
+ printf("[030] Data seems wrong, dumping\n");
+ var_dump($tmp);
+ } else {
+ if ($f_version !== $tmp[0]['_version']) {
+ printf("[031] Found different version strings, SF returned '%s'/%s, SELECT returned '%s'/%s\n",
+ $f_version, gettype($f_version),
+ $tmp[0]['_version'], gettype($tmp[0]['_version']));
+ }
+ }
+ exec_and_count(32, $db, 'DROP FUNCTION IF EXISTS f', 0);
+
+ } catch (PDOException $e) {
+ // ignore it, we might not have sufficient permissions
+ if (!$ignore_exception)
+ printf("[026] %s, [%s] %s\n",
+ $e->getMessage(),
+ $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
+ }
+
+ // multi query
+ try {
+
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
+ $exp = 0;
+
+ $tmp = @$db->exec(sprintf('DROP TABLE IF EXISTS test; CREATE TABLE test(id INT) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
+ if ($exp !== $tmp)
+ printf("[034] Expecting %s/%s got %s/%s, [%s] %s\n",
+ $exp, gettype($exp),
+ $tmp, gettype($tmp),
+ $db->errorCode(), var_export($db->errorInfo(), true));
+
+ // this is interesting: if we get sort of affected rows, what will happen now?
+ $tmp = @$db->exec('INSERT INTO test(id) VALUES (1); INSERT INTO test(id) VALUES (2)');
+ printf("[035] With emulated PS it works but makes no sense given that exec() returns sort of affected rows...\n");
+
+
+ } catch (PDOException $e) {
+ printf("[033] %s, [%s] %s\n",
+ $e->getMessage(),
+ $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
+
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_exec_ddl.phpt b/ext/pdo_mysql/tests/pdo_mysql_exec_ddl.phpt
index 0b2428cc1c..53d36af4ff 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_exec_ddl.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_exec_ddl.phpt
@@ -8,75 +8,75 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- function exec_and_count($offset, &$db, $sql, $exp, $suppress_warning = false) {
+ function exec_and_count($offset, &$db, $sql, $exp, $suppress_warning = false) {
- try {
+ try {
- if ($suppress_warning)
- $ret = @$db->exec($sql);
- else
- $ret = $db->exec($sql);
+ if ($suppress_warning)
+ $ret = @$db->exec($sql);
+ else
+ $ret = $db->exec($sql);
- if ($ret !== $exp) {
- printf("[%03d] Expecting '%s'/%s got '%s'/%s when running '%s', [%s] %s\n",
- $offset, $exp, gettype($exp), $ret, gettype($ret), $sql,
- $db->errorCode(), implode(' ', $db->errorInfo()));
- return false;
- }
+ if ($ret !== $exp) {
+ printf("[%03d] Expecting '%s'/%s got '%s'/%s when running '%s', [%s] %s\n",
+ $offset, $exp, gettype($exp), $ret, gettype($ret), $sql,
+ $db->errorCode(), implode(' ', $db->errorInfo()));
+ return false;
+ }
- } catch (PDOException $e) {
- printf("[%03d] '%s' has failed, [%s] %s\n",
- $offset, $sql, $db->errorCode(), implode(' ', $db->errorInfo()));
- return false;
- }
+ } catch (PDOException $e) {
+ printf("[%03d] '%s' has failed, [%s] %s\n",
+ $offset, $sql, $db->errorCode(), implode(' ', $db->errorInfo()));
+ return false;
+ }
- return true;
- }
+ return true;
+ }
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
- /* affected rows related */
- try {
+ /* affected rows related */
+ try {
- @$db->exec('DROP DATABASE IF EXISTS pdo_exec_ddl');
- @$db->exec('DROP DATABASE IF EXISTS pdo_exec_ddl2');
- if (1 === @$db->exec('CREATE DATABASE pdo_exec_ddl')) {
- // yippie - we can create databases etc.
- exec_and_count(3, $db, 'ALTER DATABASE pdo_exec_ddl CHARACTER SET latin1', 1);
- }
+ @$db->exec('DROP DATABASE IF EXISTS pdo_exec_ddl');
+ @$db->exec('DROP DATABASE IF EXISTS pdo_exec_ddl2');
+ if (1 === @$db->exec('CREATE DATABASE pdo_exec_ddl')) {
+ // yippie - we can create databases etc.
+ exec_and_count(3, $db, 'ALTER DATABASE pdo_exec_ddl CHARACTER SET latin1', 1);
+ }
- exec_and_count(4, $db, 'DROP TABLE IF EXISTS pdo_exec_ddl', 0);
- exec_and_count(5, $db, 'DROP TABLE IF EXISTS pdo_exec_ddl2', 0);
- if (0 === $db->exec('CREATE TABLE pdo_exec_ddl(id INT, col1 CHAR(2))')) {
- exec_and_count(5, $db, 'CREATE INDEX idx1 ON pdo_exec_ddl(id)', 0);
- exec_and_count(6, $db, 'DROP INDEX idx1 ON pdo_exec_ddl', 0);
- exec_and_count(7, $db, 'ALTER TABLE pdo_exec_ddl DROP id', 0);
- exec_and_count(8, $db, 'ALTER TABLE pdo_exec_ddl ADD id INT', 0);
- exec_and_count(9, $db, 'ALTER TABLE pdo_exec_ddl ALTER id SET DEFAULT 1', 0);
- exec_and_count(10, $db, 'RENAME TABLE pdo_exec_ddl TO pdo_exec_ddl2', 0);
- }
+ exec_and_count(4, $db, 'DROP TABLE IF EXISTS pdo_exec_ddl', 0);
+ exec_and_count(5, $db, 'DROP TABLE IF EXISTS pdo_exec_ddl2', 0);
+ if (0 === $db->exec('CREATE TABLE pdo_exec_ddl(id INT, col1 CHAR(2))')) {
+ exec_and_count(5, $db, 'CREATE INDEX idx1 ON pdo_exec_ddl(id)', 0);
+ exec_and_count(6, $db, 'DROP INDEX idx1 ON pdo_exec_ddl', 0);
+ exec_and_count(7, $db, 'ALTER TABLE pdo_exec_ddl DROP id', 0);
+ exec_and_count(8, $db, 'ALTER TABLE pdo_exec_ddl ADD id INT', 0);
+ exec_and_count(9, $db, 'ALTER TABLE pdo_exec_ddl ALTER id SET DEFAULT 1', 0);
+ exec_and_count(10, $db, 'RENAME TABLE pdo_exec_ddl TO pdo_exec_ddl2', 0);
+ }
- /*
- 11.1.2. ALTER LOGFILE GROUP Syntax
- 11.1.3. ALTER SERVER Syntax
- 11.1.5. ALTER TABLESPACE Syntax
- 11.1.8. CREATE LOGFILE GROUP Syntax
- 11.1.9. CREATE SERVER Syntax
- 11.1.11. CREATE TABLESPACE Syntax
- 11.1.14. DROP LOGFILE GROUP Syntax
- 11.1.15. DROP SERVER Syntax
- 11.1.17. DROP TABLESPACE Syntax
- */
+ /*
+ 11.1.2. ALTER LOGFILE GROUP Syntax
+ 11.1.3. ALTER SERVER Syntax
+ 11.1.5. ALTER TABLESPACE Syntax
+ 11.1.8. CREATE LOGFILE GROUP Syntax
+ 11.1.9. CREATE SERVER Syntax
+ 11.1.11. CREATE TABLESPACE Syntax
+ 11.1.14. DROP LOGFILE GROUP Syntax
+ 11.1.15. DROP SERVER Syntax
+ 11.1.17. DROP TABLESPACE Syntax
+ */
- } catch (PDOException $e) {
- printf("[001] %s, [%s] %s\n",
- $e->getMessage(),
- $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[001] %s, [%s] %s\n",
+ $e->getMessage(),
+ $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- print "done!";
+ print "done!";
--CLEAN--
<?php
require __DIR__ . '/mysql_pdo_test.inc';
diff --git a/ext/pdo_mysql/tests/pdo_mysql_exec_load_data.phpt b/ext/pdo_mysql/tests/pdo_mysql_exec_load_data.phpt
index 50b35618b3..4e3f40d369 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_exec_load_data.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_exec_load_data.phpt
@@ -30,85 +30,85 @@ if (($row = $stmt->fetch(PDO::FETCH_ASSOC)) && ($row['value'] != '')) {
?>
--FILE--
<?php
- function exec_and_count($offset, &$db, $sql, $exp) {
-
- try {
-
- $ret = $db->exec($sql);
- if ($ret !== $exp) {
- printf("[%03d] Expecting '%s'/%s got '%s'/%s when running '%s', [%s] %s\n",
- $offset, $exp, gettype($exp), $ret, gettype($ret), $sql,
- $db->errorCode(), implode(' ', $db->errorInfo()));
- return false;
- }
-
- } catch (PDOException $e) {
-
- if (42000 == $db->errorCode()) {
- // Error: 1148 SQLSTATE: 42000 (ER_NOT_ALLOWED_COMMAND)
- // Load data infile not allowed
- return false;
- }
-
- printf("[%03d] '%s' has failed, [%s] %s\n",
- $offset, $sql, $db->errorCode(), implode(' ', $db->errorInfo()));
- return false;
- }
-
- return true;
- }
-
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- putenv('PDOTEST_ATTR='.serialize([PDO::MYSQL_ATTR_LOCAL_INFILE=>true]));
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
-
- /* affected rows related */
- try {
-
- exec_and_count(2, $db, 'DROP TABLE IF EXISTS test', 0);
- exec_and_count(3, $db, sprintf('CREATE TABLE test(id INT NOT NULL PRIMARY KEY, col1 CHAR(10)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE), 0);
-
- $stmt = $db->query("SHOW VARIABLES LIKE 'secure_file_priv'");
- if (($row = $stmt->fetch(PDO::FETCH_ASSOC)) && ($row['value'] != '')) {
- $filename = $row['value'] . DIRECTORY_SEPARATOR . "pdo_mysql_exec_load_data.csv";
- } else {
- $filename = MySQLPDOTest::getTempDir() . DIRECTORY_SEPARATOR . "pdo_mysql_exec_load_data.csv";
- }
-
- $fp = fopen($filename, "w");
- fwrite($fp, "1;foo\n");
- fwrite($fp, "2;bar");
- fclose($fp);
-
- $sql = sprintf("LOAD DATA LOCAL INFILE %s INTO TABLE test FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'", $db->quote($filename));
-
- if (exec_and_count(4, $db, $sql, 2)) {
-
- $stmt = $db->query('SELECT id, col1 FROM test ORDER BY id ASC');
- $expected = array(array("id" => 1, "col1" => "foo"), array("id" => 2, "col1" => "bar"));
- $ret = $stmt->fetchAll(PDO::FETCH_ASSOC);
- foreach ($expected as $offset => $exp) {
- foreach ($exp as $key => $value) {
- if ($ret[$offset][$key] != $value) {
- printf("Results seem wrong, check manually\n");
- var_dump($ret);
- var_dump($expected);
- break 2;
- }
- }
- }
- }
-
- unlink($filename);
-
- } catch (PDOException $e) {
- printf("[001] %s, [%s] %s\n",
- $e->getMessage(),
- $db->errorCode(), implode(' ', $db->errorInfo()));
- }
-
- print "done!";
+ function exec_and_count($offset, &$db, $sql, $exp) {
+
+ try {
+
+ $ret = $db->exec($sql);
+ if ($ret !== $exp) {
+ printf("[%03d] Expecting '%s'/%s got '%s'/%s when running '%s', [%s] %s\n",
+ $offset, $exp, gettype($exp), $ret, gettype($ret), $sql,
+ $db->errorCode(), implode(' ', $db->errorInfo()));
+ return false;
+ }
+
+ } catch (PDOException $e) {
+
+ if (42000 == $db->errorCode()) {
+ // Error: 1148 SQLSTATE: 42000 (ER_NOT_ALLOWED_COMMAND)
+ // Load data infile not allowed
+ return false;
+ }
+
+ printf("[%03d] '%s' has failed, [%s] %s\n",
+ $offset, $sql, $db->errorCode(), implode(' ', $db->errorInfo()));
+ return false;
+ }
+
+ return true;
+ }
+
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ putenv('PDOTEST_ATTR='.serialize([PDO::MYSQL_ATTR_LOCAL_INFILE=>true]));
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
+
+ /* affected rows related */
+ try {
+
+ exec_and_count(2, $db, 'DROP TABLE IF EXISTS test', 0);
+ exec_and_count(3, $db, sprintf('CREATE TABLE test(id INT NOT NULL PRIMARY KEY, col1 CHAR(10)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE), 0);
+
+ $stmt = $db->query("SHOW VARIABLES LIKE 'secure_file_priv'");
+ if (($row = $stmt->fetch(PDO::FETCH_ASSOC)) && ($row['value'] != '')) {
+ $filename = $row['value'] . DIRECTORY_SEPARATOR . "pdo_mysql_exec_load_data.csv";
+ } else {
+ $filename = MySQLPDOTest::getTempDir() . DIRECTORY_SEPARATOR . "pdo_mysql_exec_load_data.csv";
+ }
+
+ $fp = fopen($filename, "w");
+ fwrite($fp, "1;foo\n");
+ fwrite($fp, "2;bar");
+ fclose($fp);
+
+ $sql = sprintf("LOAD DATA LOCAL INFILE %s INTO TABLE test FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'", $db->quote($filename));
+
+ if (exec_and_count(4, $db, $sql, 2)) {
+
+ $stmt = $db->query('SELECT id, col1 FROM test ORDER BY id ASC');
+ $expected = array(array("id" => 1, "col1" => "foo"), array("id" => 2, "col1" => "bar"));
+ $ret = $stmt->fetchAll(PDO::FETCH_ASSOC);
+ foreach ($expected as $offset => $exp) {
+ foreach ($exp as $key => $value) {
+ if ($ret[$offset][$key] != $value) {
+ printf("Results seem wrong, check manually\n");
+ var_dump($ret);
+ var_dump($expected);
+ break 2;
+ }
+ }
+ }
+ }
+
+ unlink($filename);
+
+ } catch (PDOException $e) {
+ printf("[001] %s, [%s] %s\n",
+ $e->getMessage(),
+ $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
+
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_exec_select.phpt b/ext/pdo_mysql/tests/pdo_mysql_exec_select.phpt
index 901a4ad9a8..2cff2e3915 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_exec_select.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_exec_select.phpt
@@ -8,50 +8,50 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- function exec_and_count($offset, &$db, $sql, $exp) {
+ function exec_and_count($offset, &$db, $sql, $exp) {
- try {
+ try {
- $ret = $db->exec($sql);
- if ($ret !== $exp) {
- printf("[%03d] Expecting '%s'/%s got '%s'/%s when running '%s', [%s] %s\n",
- $offset, $exp, gettype($exp), $ret, gettype($ret), $sql,
- $db->errorCode(), implode(' ', $db->errorInfo()));
- return false;
- }
+ $ret = $db->exec($sql);
+ if ($ret !== $exp) {
+ printf("[%03d] Expecting '%s'/%s got '%s'/%s when running '%s', [%s] %s\n",
+ $offset, $exp, gettype($exp), $ret, gettype($ret), $sql,
+ $db->errorCode(), implode(' ', $db->errorInfo()));
+ return false;
+ }
- } catch (PDOException $e) {
- printf("[%03d] '%s' has failed, [%s] %s\n",
- $offset, $sql, $db->errorCode(), implode(' ', $db->errorInfo()));
- return false;
- }
+ } catch (PDOException $e) {
+ printf("[%03d] '%s' has failed, [%s] %s\n",
+ $offset, $sql, $db->errorCode(), implode(' ', $db->errorInfo()));
+ return false;
+ }
- return true;
- }
+ return true;
+ }
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
- /* affected rows related */
- try {
+ /* affected rows related */
+ try {
- exec_and_count(2, $db, 'DROP TABLE IF EXISTS test', 0);
- exec_and_count(3, $db, sprintf('CREATE TABLE test(id INT NOT NULL PRIMARY KEY, col1 CHAR(10)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE), 0);
- exec_and_count(4, $db, "INSERT INTO test(id, col1) VALUES (1, 'a')", 1);
- // question is: will the result set be cleaned up, will it be possible to run more queries on the line?
- // buffered or unbuffered does not matter!
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
- exec_and_count(5, $db, 'SELECT id FROM test', 0);
- exec_and_count(6, $db, "INSERT INTO test(id, col1) VALUES (2, 'b')", 1);
+ exec_and_count(2, $db, 'DROP TABLE IF EXISTS test', 0);
+ exec_and_count(3, $db, sprintf('CREATE TABLE test(id INT NOT NULL PRIMARY KEY, col1 CHAR(10)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE), 0);
+ exec_and_count(4, $db, "INSERT INTO test(id, col1) VALUES (1, 'a')", 1);
+ // question is: will the result set be cleaned up, will it be possible to run more queries on the line?
+ // buffered or unbuffered does not matter!
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
+ exec_and_count(5, $db, 'SELECT id FROM test', 0);
+ exec_and_count(6, $db, "INSERT INTO test(id, col1) VALUES (2, 'b')", 1);
- } catch (PDOException $e) {
- printf("[001] %s, [%s] %s\n",
- $e->getMessage(),
- $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[001] %s, [%s] %s\n",
+ $e->getMessage(),
+ $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_fetch_both.phpt b/ext/pdo_mysql/tests/pdo_mysql_fetch_both.phpt
index 31b2bd5d75..fb20dff5bc 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_fetch_both.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_fetch_both.phpt
@@ -9,54 +9,54 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- function fetch($offset, &$db, $query, $expect = null) {
+ function fetch($offset, &$db, $query, $expect = null) {
- try {
- $stmt = $db->query('SELECT 1');
- $num = $stmt->fetch(PDO::FETCH_NUM);
+ try {
+ $stmt = $db->query('SELECT 1');
+ $num = $stmt->fetch(PDO::FETCH_NUM);
- $stmt = $db->query('SELECT 1');
- $assoc = $stmt->fetch(PDO::FETCH_ASSOC);
+ $stmt = $db->query('SELECT 1');
+ $assoc = $stmt->fetch(PDO::FETCH_ASSOC);
- $stmt = $db->query('SELECT 1');
- $both = $stmt->fetch(PDO::FETCH_BOTH);
+ $stmt = $db->query('SELECT 1');
+ $both = $stmt->fetch(PDO::FETCH_BOTH);
- $computed_both = array_merge($num, $assoc);
- if ($computed_both != $both) {
- printf("[%03d] Suspicious FETCH_BOTH result, dumping\n", $offset);
- var_dump($computed_both);
- var_dump($both);
- }
+ $computed_both = array_merge($num, $assoc);
+ if ($computed_both != $both) {
+ printf("[%03d] Suspicious FETCH_BOTH result, dumping\n", $offset);
+ var_dump($computed_both);
+ var_dump($both);
+ }
- if (!is_null($expect) && ($expect != $both)) {
- printf("[%03d] Expected differs from returned data, dumping\n", $offset);
- var_dump($expect);
- var_dump($both);
- }
+ if (!is_null($expect) && ($expect != $both)) {
+ printf("[%03d] Expected differs from returned data, dumping\n", $offset);
+ var_dump($expect);
+ var_dump($both);
+ }
- } catch (PDOException $e) {
+ } catch (PDOException $e) {
- printf("[%03d] %s, [%s] %s\n",
- $offset,
- $e->getMessage(), $db->errroCode(), implode(' ', $db->errorInfo()));
+ printf("[%03d] %s, [%s] %s\n",
+ $offset,
+ $e->getMessage(), $db->errroCode(), implode(' ', $db->errorInfo()));
- }
+ }
- }
+ }
- try {
+ try {
- fetch(2, $db, 'SELECT 1', array(0 => '1', '1' => '1'));
+ fetch(2, $db, 'SELECT 1', array(0 => '1', '1' => '1'));
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- print "done!";
+ print "done!";
?>
--EXPECT--
done!
diff --git a/ext/pdo_mysql/tests/pdo_mysql_get_attribute.phpt b/ext/pdo_mysql/tests/pdo_mysql_get_attribute.phpt
index 51310faa9e..386dfb1e1e 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_get_attribute.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_get_attribute.phpt
@@ -11,60 +11,60 @@ if (false == MySQLPDOTest::detect_transactional_mysql_engine($db))
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
-
- function set_and_get($offset, $db, $attribute, $value) {
-
- $value_type = gettype($value);
- try {
-
- if (!$db->setAttribute($attribute, $value)) {
- printf("[%03d] Cannot set attribute '%s' to value '%s'\n",
- $offset, $attribute, var_export($tmp, true));
- return false;
- }
-
- if (gettype($value) != $value_type) {
- printf("[%03d] Call to PDO::setAttribute(int attribute, mixed value) has changed the type of value from %s to %s, test will not work properly\n",
- $offset, $value_type, gettype($value));
- return false;
- }
-
- $tmp = $db->getAttribute($attribute);
- if ($tmp !== $value) {
- printf("[%03d] Attribute '%s' was set to '%s'/%s but getAttribute() reports '%s'/%s\n",
- $offset, $attribute, var_export($value, true), gettype($value), var_export($tmp, true), gettype($tmp));
- return false;
- }
-
- } catch (PDOException $e) {
- printf("[%03d] %s, [%s] %s\n",
- $offset, $e->getMessage(),
- $db->errorCode(), implode(' ', $db->errorInfo()));
- return false;
- }
-
- return true;
- }
-
- set_and_get(1, $db, PDO::ATTR_AUTOCOMMIT, 1);
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
+
+ function set_and_get($offset, $db, $attribute, $value) {
+
+ $value_type = gettype($value);
+ try {
+
+ if (!$db->setAttribute($attribute, $value)) {
+ printf("[%03d] Cannot set attribute '%s' to value '%s'\n",
+ $offset, $attribute, var_export($tmp, true));
+ return false;
+ }
+
+ if (gettype($value) != $value_type) {
+ printf("[%03d] Call to PDO::setAttribute(int attribute, mixed value) has changed the type of value from %s to %s, test will not work properly\n",
+ $offset, $value_type, gettype($value));
+ return false;
+ }
+
+ $tmp = $db->getAttribute($attribute);
+ if ($tmp !== $value) {
+ printf("[%03d] Attribute '%s' was set to '%s'/%s but getAttribute() reports '%s'/%s\n",
+ $offset, $attribute, var_export($value, true), gettype($value), var_export($tmp, true), gettype($tmp));
+ return false;
+ }
+
+ } catch (PDOException $e) {
+ printf("[%03d] %s, [%s] %s\n",
+ $offset, $e->getMessage(),
+ $db->errorCode(), implode(' ', $db->errorInfo()));
+ return false;
+ }
+
+ return true;
+ }
+
+ set_and_get(1, $db, PDO::ATTR_AUTOCOMMIT, 1);
/*
- set_and_get(2, $db, PDO::ATTR_AUTOCOMMIT, 0);
- set_and_get(3, $db, PDO::ATTR_AUTOCOMMIT, -1);
- $obj = new stdClass();
- set_and_get(4, $db, PDO::ATTR_AUTOCOMMIT, $obj);
+ set_and_get(2, $db, PDO::ATTR_AUTOCOMMIT, 0);
+ set_and_get(3, $db, PDO::ATTR_AUTOCOMMIT, -1);
+ $obj = new stdClass();
+ set_and_get(4, $db, PDO::ATTR_AUTOCOMMIT, $obj);
- set_and_get(5, $db, PDO::MYSQL_ATTR_LOCAL_INFILE, 1);
- set_and_get(6, $db, PDO::MYSQL_ATTR_LOCAL_INFILE, 0);
- set_and_get(7, $db, PDO::MYSQL_ATTR_LOCAL_INFILE, -1);
- $tmp = array();
- set_and_get(8, $db, PDO::MYSQL_ATTR_LOCAL_INFILE, $tmp);
+ set_and_get(5, $db, PDO::MYSQL_ATTR_LOCAL_INFILE, 1);
+ set_and_get(6, $db, PDO::MYSQL_ATTR_LOCAL_INFILE, 0);
+ set_and_get(7, $db, PDO::MYSQL_ATTR_LOCAL_INFILE, -1);
+ $tmp = array();
+ set_and_get(8, $db, PDO::MYSQL_ATTR_LOCAL_INFILE, $tmp);
- set_and_get(9, $db, PPDO::MYSQL_ATTR_INIT_COMMAND, '');
- set_and_get(10, $db, PPDO::MYSQL_ATTR_INIT_COMMAND, 'SOME SQL');
- set_and_get(11, $db, PPDO::MYSQL_ATTR_INIT_COMMAND, -1);
+ set_and_get(9, $db, PPDO::MYSQL_ATTR_INIT_COMMAND, '');
+ set_and_get(10, $db, PPDO::MYSQL_ATTR_INIT_COMMAND, 'SOME SQL');
+ set_and_get(11, $db, PPDO::MYSQL_ATTR_INIT_COMMAND, -1);
*/
/*
@@ -87,7 +87,7 @@ PDO::ATTR_CONNECTION_STATUS
PDO::ATTR_SERVER_INFO
*/
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_interface.phpt b/ext/pdo_mysql/tests/pdo_mysql_interface.phpt
index cc949b265d..fbf0938dc9 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_interface.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_interface.phpt
@@ -11,48 +11,48 @@ if (false == MySQLPDOTest::detect_transactional_mysql_engine($db))
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- $expected = array(
- '__construct' => true,
- 'prepare' => true,
- 'beginTransaction' => true,
- 'commit' => true,
- 'rollBack' => true,
- 'setAttribute' => true,
- 'exec' => true,
- 'query' => true,
- 'lastInsertId' => true,
- 'errorCode' => true,
- 'errorInfo' => true,
- 'getAttribute' => true,
- 'quote' => true,
- 'inTransaction' => true,
- 'getAvailableDrivers' => true,
- );
- $classname = get_class($db);
+ $expected = array(
+ '__construct' => true,
+ 'prepare' => true,
+ 'beginTransaction' => true,
+ 'commit' => true,
+ 'rollBack' => true,
+ 'setAttribute' => true,
+ 'exec' => true,
+ 'query' => true,
+ 'lastInsertId' => true,
+ 'errorCode' => true,
+ 'errorInfo' => true,
+ 'getAttribute' => true,
+ 'quote' => true,
+ 'inTransaction' => true,
+ 'getAvailableDrivers' => true,
+ );
+ $classname = get_class($db);
- $methods = get_class_methods($classname);
- foreach ($methods as $k => $method) {
- if (isset($expected[$method])) {
- unset($expected[$method]);
- unset($methods[$k]);
- }
- if ($method == $classname) {
- unset($expected['__construct']);
- unset($methods[$k]);
- }
- }
- if (!empty($expected)) {
- printf("Dumping missing class methods\n");
- var_dump($expected);
- }
- if (!empty($methods)) {
- printf("Found more methods than expected, dumping list\n");
- var_dump($methods);
- }
+ $methods = get_class_methods($classname);
+ foreach ($methods as $k => $method) {
+ if (isset($expected[$method])) {
+ unset($expected[$method]);
+ unset($methods[$k]);
+ }
+ if ($method == $classname) {
+ unset($expected['__construct']);
+ unset($methods[$k]);
+ }
+ }
+ if (!empty($expected)) {
+ printf("Dumping missing class methods\n");
+ var_dump($expected);
+ }
+ if (!empty($methods)) {
+ printf("Found more methods than expected, dumping list\n");
+ var_dump($methods);
+ }
- print "done!";
+ print "done!";
--EXPECT--
done!
diff --git a/ext/pdo_mysql/tests/pdo_mysql_last_insert_id.phpt b/ext/pdo_mysql/tests/pdo_mysql_last_insert_id.phpt
index d9dec0bcd3..b63ecb2c52 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_last_insert_id.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_last_insert_id.phpt
@@ -9,106 +9,106 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
-
- try {
- if ('0' !== ($tmp = $db->lastInsertId()))
- printf("[001] No query has been run, lastInsertId() should return '0'/string got '%s'/%s\n",
- var_export($tmp, true), gettype($tmp));
-
- if ('0' !== ($tmp = $db->lastInsertId('sequence_name')))
- printf("[002] MySQL does not support sequences, expecting '0'/string got '%s'/%s\n",
- var_export($tmp, true), gettype($tmp));
-
- $db->exec('DROP TABLE IF EXISTS test');
- if ('0' !== ($tmp = $db->lastInsertId()))
- printf("[003] Expecting '0'/string got '%s'/%s", var_export($tmp, true), gettype($tmp));
-
- $db->exec(sprintf('CREATE TABLE test(id INT, col1 CHAR(10)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
- if ('0' !== ($tmp = $db->lastInsertId()))
- printf("[004] Expecting '0'/string got '%s'/%s", var_export($tmp, true), gettype($tmp));
-
- $stmt = $db->query('SELECT id FROM test LIMIT 1');
- if ('0' !== ($tmp = $db->lastInsertId()))
- printf("[005] Expecting '0'/string got '%s'/%s", var_export($tmp, true), gettype($tmp));
-
- // no auto increment column
- $db->exec("INSERT INTO test(id, col1) VALUES (100, 'a')");
- if ('0' !== ($tmp = $db->lastInsertId()))
- printf("[006] Expecting '0'/string got '%s'/%s", var_export($tmp, true), gettype($tmp));
-
- $db->exec('ALTER TABLE test MODIFY id INT AUTO_INCREMENT PRIMARY KEY');
- if ('0' !== ($tmp = $db->lastInsertId()))
- printf("[006] Expecting '0'/string got '%s'/%s", var_export($tmp, true), gettype($tmp));
-
- // duplicate key
- @$db->exec("INSERT INTO test(id, col1) VALUES (100, 'a')");
- if ('0' !== ($tmp = $db->lastInsertId()))
- printf("[007] Expecting '0'/string got '%s'/%s", var_export($tmp, true), gettype($tmp));
-
- $db->exec("INSERT INTO test(id, col1) VALUES (101, 'b')");
- if ('101' !== ($tmp = $db->lastInsertId()))
- printf("[008] Expecting '0'/string got '%s'/%s", var_export($tmp, true), gettype($tmp));
-
- $db->exec('ALTER TABLE test MODIFY col1 CHAR(10) UNIQUE');
- // replace = delete + insert -> new auto increment value
- $db->exec("REPLACE INTO test(col1) VALUES ('b')");
- $next_id = (int)$db->lastInsertId();
-
- if ($next_id <= 101)
- printf("[009] Expecting at least 102, got %d\n",$next_id);
-
- $stmt = $db->query('SELECT LAST_INSERT_ID() as _last_id');
- $row = $stmt->fetch(PDO::FETCH_ASSOC);
- $last_id = $row['_last_id'];
- if ($next_id != $last_id) {
- printf("[010] LAST_INSERT_ID() = %d and lastInserId() = %d differ\n",
- $last_id, $next_id);
- }
-
- $db->exec("INSERT INTO test(col1) VALUES ('c'), ('d'), ('e')");
- $next_id = (int)$db->lastInsertId();
- if ($next_id <= $last_id)
- printf("[011] Expecting at least %d, got %d\n", $last_id + 1, $next_id);
-
- // warnings are unhandy, lets go for exceptions for a second
- $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- try {
- $ignore_exception = true;
- $db->exec('LOCK TABLE test WRITE');
- $ignore_exception = false;
-
- if (MySQLPDOTest::getServerVersion($db) >= 50000) {
- $stmt = $db->query('SELECT @@auto_increment_increment AS inc');
- $row = $stmt->fetch(PDO::FETCH_ASSOC);
- $inc = $row['inc'];
- } else {
- $inc = 1;
- }
-
- $stmt = $db->query('SELECT LAST_INSERT_ID() as _last_id');
- $row = $stmt->fetch(PDO::FETCH_ASSOC);
- $last_id = $row['_last_id'];
-
- $db->exec("INSERT INTO test(col1) VALUES ('z')");
- $next_id = (int)$db->lastInsertId();
- if ($next_id < ($last_id + $inc))
- printf("[012] Expecting at least %d, got %d\n", $last_id + $inc, $next_id);
-
- } catch (PDOException $e) {
- if (!$ignore_exception)
- printf("[014] %s, [%s} %s\n", $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
- $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
- @$db->exec('UNLOCK TABLE test');
-
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
-
- print "done!";
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+
+ try {
+ if ('0' !== ($tmp = $db->lastInsertId()))
+ printf("[001] No query has been run, lastInsertId() should return '0'/string got '%s'/%s\n",
+ var_export($tmp, true), gettype($tmp));
+
+ if ('0' !== ($tmp = $db->lastInsertId('sequence_name')))
+ printf("[002] MySQL does not support sequences, expecting '0'/string got '%s'/%s\n",
+ var_export($tmp, true), gettype($tmp));
+
+ $db->exec('DROP TABLE IF EXISTS test');
+ if ('0' !== ($tmp = $db->lastInsertId()))
+ printf("[003] Expecting '0'/string got '%s'/%s", var_export($tmp, true), gettype($tmp));
+
+ $db->exec(sprintf('CREATE TABLE test(id INT, col1 CHAR(10)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
+ if ('0' !== ($tmp = $db->lastInsertId()))
+ printf("[004] Expecting '0'/string got '%s'/%s", var_export($tmp, true), gettype($tmp));
+
+ $stmt = $db->query('SELECT id FROM test LIMIT 1');
+ if ('0' !== ($tmp = $db->lastInsertId()))
+ printf("[005] Expecting '0'/string got '%s'/%s", var_export($tmp, true), gettype($tmp));
+
+ // no auto increment column
+ $db->exec("INSERT INTO test(id, col1) VALUES (100, 'a')");
+ if ('0' !== ($tmp = $db->lastInsertId()))
+ printf("[006] Expecting '0'/string got '%s'/%s", var_export($tmp, true), gettype($tmp));
+
+ $db->exec('ALTER TABLE test MODIFY id INT AUTO_INCREMENT PRIMARY KEY');
+ if ('0' !== ($tmp = $db->lastInsertId()))
+ printf("[006] Expecting '0'/string got '%s'/%s", var_export($tmp, true), gettype($tmp));
+
+ // duplicate key
+ @$db->exec("INSERT INTO test(id, col1) VALUES (100, 'a')");
+ if ('0' !== ($tmp = $db->lastInsertId()))
+ printf("[007] Expecting '0'/string got '%s'/%s", var_export($tmp, true), gettype($tmp));
+
+ $db->exec("INSERT INTO test(id, col1) VALUES (101, 'b')");
+ if ('101' !== ($tmp = $db->lastInsertId()))
+ printf("[008] Expecting '0'/string got '%s'/%s", var_export($tmp, true), gettype($tmp));
+
+ $db->exec('ALTER TABLE test MODIFY col1 CHAR(10) UNIQUE');
+ // replace = delete + insert -> new auto increment value
+ $db->exec("REPLACE INTO test(col1) VALUES ('b')");
+ $next_id = (int)$db->lastInsertId();
+
+ if ($next_id <= 101)
+ printf("[009] Expecting at least 102, got %d\n",$next_id);
+
+ $stmt = $db->query('SELECT LAST_INSERT_ID() as _last_id');
+ $row = $stmt->fetch(PDO::FETCH_ASSOC);
+ $last_id = $row['_last_id'];
+ if ($next_id != $last_id) {
+ printf("[010] LAST_INSERT_ID() = %d and lastInserId() = %d differ\n",
+ $last_id, $next_id);
+ }
+
+ $db->exec("INSERT INTO test(col1) VALUES ('c'), ('d'), ('e')");
+ $next_id = (int)$db->lastInsertId();
+ if ($next_id <= $last_id)
+ printf("[011] Expecting at least %d, got %d\n", $last_id + 1, $next_id);
+
+ // warnings are unhandy, lets go for exceptions for a second
+ $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+ try {
+ $ignore_exception = true;
+ $db->exec('LOCK TABLE test WRITE');
+ $ignore_exception = false;
+
+ if (MySQLPDOTest::getServerVersion($db) >= 50000) {
+ $stmt = $db->query('SELECT @@auto_increment_increment AS inc');
+ $row = $stmt->fetch(PDO::FETCH_ASSOC);
+ $inc = $row['inc'];
+ } else {
+ $inc = 1;
+ }
+
+ $stmt = $db->query('SELECT LAST_INSERT_ID() as _last_id');
+ $row = $stmt->fetch(PDO::FETCH_ASSOC);
+ $last_id = $row['_last_id'];
+
+ $db->exec("INSERT INTO test(col1) VALUES ('z')");
+ $next_id = (int)$db->lastInsertId();
+ if ($next_id < ($last_id + $inc))
+ printf("[012] Expecting at least %d, got %d\n", $last_id + $inc, $next_id);
+
+ } catch (PDOException $e) {
+ if (!$ignore_exception)
+ printf("[014] %s, [%s} %s\n", $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
+ $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+ @$db->exec('UNLOCK TABLE test');
+
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
+
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_multi_stmt_nextrowset.phpt b/ext/pdo_mysql/tests/pdo_mysql_multi_stmt_nextrowset.phpt
index f520c1d828..74ab7858d4 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_multi_stmt_nextrowset.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_multi_stmt_nextrowset.phpt
@@ -21,65 +21,65 @@ if (!MySQLPDOTest::isPDOMySQLnd())
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
- MySQLPDOTest::createTestTable($db);
+ MySQLPDOTest::createTestTable($db);
- function test_proc($db) {
+ function test_proc($db) {
- $db->exec('DROP PROCEDURE IF EXISTS p');
- $db->exec('CREATE PROCEDURE p() BEGIN SELECT id FROM test ORDER BY id ASC LIMIT 3; SELECT id, label FROM test WHERE id < 4 ORDER BY id DESC LIMIT 3; END;');
- $stmt = $db->query('CALL p()');
- do {
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- } while ($stmt->nextRowSet());
- var_dump($stmt->nextRowSet());
+ $db->exec('DROP PROCEDURE IF EXISTS p');
+ $db->exec('CREATE PROCEDURE p() BEGIN SELECT id FROM test ORDER BY id ASC LIMIT 3; SELECT id, label FROM test WHERE id < 4 ORDER BY id DESC LIMIT 3; END;');
+ $stmt = $db->query('CALL p()');
+ do {
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ } while ($stmt->nextRowSet());
+ var_dump($stmt->nextRowSet());
- }
+ }
- try {
+ try {
- // Using native PS for proc, since emulated fails.
- printf("Native PS...\n");
- foreach (array(false, true) as $multi) {
- $value = $multi ? 'true' : 'false';
- echo "\nTesting with PDO::MYSQL_ATTR_MULTI_STATEMENTS set to {$value}\n";
- $dsn = MySQLPDOTest::getDSN();
- $user = PDO_MYSQL_TEST_USER;
- $pass = PDO_MYSQL_TEST_PASS;
- $db = new PDO($dsn, $user, $pass, array(PDO::MYSQL_ATTR_MULTI_STATEMENTS => $multi));
- $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 1);
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
- test_proc($db);
+ // Using native PS for proc, since emulated fails.
+ printf("Native PS...\n");
+ foreach (array(false, true) as $multi) {
+ $value = $multi ? 'true' : 'false';
+ echo "\nTesting with PDO::MYSQL_ATTR_MULTI_STATEMENTS set to {$value}\n";
+ $dsn = MySQLPDOTest::getDSN();
+ $user = PDO_MYSQL_TEST_USER;
+ $pass = PDO_MYSQL_TEST_PASS;
+ $db = new PDO($dsn, $user, $pass, array(PDO::MYSQL_ATTR_MULTI_STATEMENTS => $multi));
+ $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 1);
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
+ test_proc($db);
- $db = new PDO($dsn, $user, $pass, array(PDO::MYSQL_ATTR_MULTI_STATEMENTS => $multi));
- $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 0);
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
+ $db = new PDO($dsn, $user, $pass, array(PDO::MYSQL_ATTR_MULTI_STATEMENTS => $multi));
+ $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 0);
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
- test_proc($db);
+ test_proc($db);
- // Switch back to emulated prepares to verify multi statement attribute.
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
- // This will fail when $multi is false.
- $stmt = $db->query("SELECT * FROM test; INSERT INTO test (id, label) VALUES (99, 'x')");
- if ($stmt !== false) {
- $stmt->closeCursor();
- }
- $info = $db->errorInfo();
- var_dump($info[0]);
- }
- @$db->exec('DROP PROCEDURE IF EXISTS p');
+ // Switch back to emulated prepares to verify multi statement attribute.
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
+ // This will fail when $multi is false.
+ $stmt = $db->query("SELECT * FROM test; INSERT INTO test (id, label) VALUES (99, 'x')");
+ if ($stmt !== false) {
+ $stmt->closeCursor();
+ }
+ $info = $db->errorInfo();
+ var_dump($info[0]);
+ }
+ @$db->exec('DROP PROCEDURE IF EXISTS p');
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_param_str_natl.phpt b/ext/pdo_mysql/tests/pdo_mysql_param_str_natl.phpt
index 01964c0cd9..a45259f0e0 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_param_str_natl.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_param_str_natl.phpt
@@ -23,7 +23,7 @@ $stmt->execute();
var_dump($db->query('SELECT * from test'));
foreach ($db->query('SELECT * from test') as $row) {
- print_r($row);
+ print_r($row);
}
?>
diff --git a/ext/pdo_mysql/tests/pdo_mysql_pconnect.phpt b/ext/pdo_mysql/tests/pdo_mysql_pconnect.phpt
index 3656e71a0c..4d95c73cdc 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_pconnect.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_pconnect.phpt
@@ -8,92 +8,92 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
-
- try {
-
- $dsn = MySQLPDOTest::getDSN();
- $user = PDO_MYSQL_TEST_USER;
- $pass = PDO_MYSQL_TEST_PASS;
-
- $db1 = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
- $db2 = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
- $db1->exec('SET @pdo_persistent_connection=1');
- $stmt = $db2->query('SELECT @pdo_persistent_connection as _pers');
- $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
- if ($tmp['_pers'] !== '1')
- printf("[001] Both handles should use the same connection.");
-
- $stmt = $db1->query('SELECT CONNECTION_ID() as _con1');
- $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
- $con1 = $tmp['_con1'];
-
- $stmt = $db2->query('SELECT CONNECTION_ID() as _con2');
- $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
- $con2 = $tmp['_con2'];
-
- if ($con1 !== $con2)
- printf("[002] Both handles should report the same MySQL thread ID");
-
- $db1 = NULL; /* should be equal to closing to my understanding */
- $db1 = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
- $stmt = $db1->query('SELECT CONNECTION_ID() as _con1');
- $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
- $con1 = $tmp['_con1'];
-
- if ($con1 !== $con2)
- printf("[003] Both handles should report the same MySQL thread ID");
-
- $affected = $db1->exec(sprintf('KILL %d', $con1));
- // Server needs some think-time sometimes
- sleep(1);
- if ('00000' == $db1->errorCode()) {
- // looks like KILL has worked ? Or not... TODO: why no warning with libmysql?!
- @$db1->exec("SET @pdo_persistent_connection=2");
- // but now I want to see some error...
- if ('HY000' != $db1->errorCode())
- printf("[004] Wrong error code %s\n", $db1->errorCode());
-
- $tmp = implode(' ', $db1->errorInfo());
- if (!strstr($tmp, '2006'))
- printf("[005] Wrong error info %s\n", $tmp);
- }
-
- $db1 = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => false));
- $stmt = $db1->query('SELECT CONNECTION_ID() as _con1');
- $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
- $con1 = $tmp['_con1'];
-
- @$db2 = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
- $stmt = $db2->query('SELECT CONNECTION_ID() as _con2');
- $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
- $con2 = $tmp['_con2'];
-
- if ($con1 == $con2)
- printf("[006] Looks like the persistent and the non persistent connection are using the same link?!\n");
-
- // lets go crazy and create a few pconnections...
- $connections = array();
- for ($i = 0; $i <= 20; $i++) {
- $connections[$i] = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
- }
- do {
- $i = mt_rand(0, 20);
- if (isset($connections[$i]))
- unset($connections[$i]);
- } while (!empty($connections));
-
-
- } catch (PDOException $e) {
- printf("[001] %s, [%s] %s [%s] %s\n",
- $e->getMessage(),
- (is_object($db1)) ? $db1->errorCode() : 'n/a',
- (is_object($db1)) ? implode(' ', $db1->errorInfo()) : 'n/a',
- (is_object($db2)) ? $db2->errorCode() : 'n/a',
- (is_object($db2)) ? implode(' ', $db2->errorInfo()) : 'n/a');
- }
-
- print "done!";
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+
+ try {
+
+ $dsn = MySQLPDOTest::getDSN();
+ $user = PDO_MYSQL_TEST_USER;
+ $pass = PDO_MYSQL_TEST_PASS;
+
+ $db1 = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
+ $db2 = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
+ $db1->exec('SET @pdo_persistent_connection=1');
+ $stmt = $db2->query('SELECT @pdo_persistent_connection as _pers');
+ $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
+ if ($tmp['_pers'] !== '1')
+ printf("[001] Both handles should use the same connection.");
+
+ $stmt = $db1->query('SELECT CONNECTION_ID() as _con1');
+ $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
+ $con1 = $tmp['_con1'];
+
+ $stmt = $db2->query('SELECT CONNECTION_ID() as _con2');
+ $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
+ $con2 = $tmp['_con2'];
+
+ if ($con1 !== $con2)
+ printf("[002] Both handles should report the same MySQL thread ID");
+
+ $db1 = NULL; /* should be equal to closing to my understanding */
+ $db1 = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
+ $stmt = $db1->query('SELECT CONNECTION_ID() as _con1');
+ $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
+ $con1 = $tmp['_con1'];
+
+ if ($con1 !== $con2)
+ printf("[003] Both handles should report the same MySQL thread ID");
+
+ $affected = $db1->exec(sprintf('KILL %d', $con1));
+ // Server needs some think-time sometimes
+ sleep(1);
+ if ('00000' == $db1->errorCode()) {
+ // looks like KILL has worked ? Or not... TODO: why no warning with libmysql?!
+ @$db1->exec("SET @pdo_persistent_connection=2");
+ // but now I want to see some error...
+ if ('HY000' != $db1->errorCode())
+ printf("[004] Wrong error code %s\n", $db1->errorCode());
+
+ $tmp = implode(' ', $db1->errorInfo());
+ if (!strstr($tmp, '2006'))
+ printf("[005] Wrong error info %s\n", $tmp);
+ }
+
+ $db1 = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => false));
+ $stmt = $db1->query('SELECT CONNECTION_ID() as _con1');
+ $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
+ $con1 = $tmp['_con1'];
+
+ @$db2 = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
+ $stmt = $db2->query('SELECT CONNECTION_ID() as _con2');
+ $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
+ $con2 = $tmp['_con2'];
+
+ if ($con1 == $con2)
+ printf("[006] Looks like the persistent and the non persistent connection are using the same link?!\n");
+
+ // lets go crazy and create a few pconnections...
+ $connections = array();
+ for ($i = 0; $i <= 20; $i++) {
+ $connections[$i] = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
+ }
+ do {
+ $i = mt_rand(0, 20);
+ if (isset($connections[$i]))
+ unset($connections[$i]);
+ } while (!empty($connections));
+
+
+ } catch (PDOException $e) {
+ printf("[001] %s, [%s] %s [%s] %s\n",
+ $e->getMessage(),
+ (is_object($db1)) ? $db1->errorCode() : 'n/a',
+ (is_object($db1)) ? implode(' ', $db1->errorInfo()) : 'n/a',
+ (is_object($db2)) ? $db2->errorCode() : 'n/a',
+ (is_object($db2)) ? implode(' ', $db2->errorInfo()) : 'n/a');
+ }
+
+ print "done!";
?>
--EXPECT--
done!
diff --git a/ext/pdo_mysql/tests/pdo_mysql_phpinfo.phpt b/ext/pdo_mysql/tests/pdo_mysql_phpinfo.phpt
index a230b3c19f..e44f1d2a52 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_phpinfo.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_phpinfo.phpt
@@ -9,22 +9,22 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- ob_start();
- phpinfo();
- $tmp = ob_get_contents();
- ob_end_clean();
+ ob_start();
+ phpinfo();
+ $tmp = ob_get_contents();
+ ob_end_clean();
- /* PDO Driver for MySQL, client library version => 6.0.3-alpha */
- $reg = 'Client API version.*' . preg_quote($db->getAttribute(PDO::ATTR_CLIENT_VERSION), '/');
+ /* PDO Driver for MySQL, client library version => 6.0.3-alpha */
+ $reg = 'Client API version.*' . preg_quote($db->getAttribute(PDO::ATTR_CLIENT_VERSION), '/');
- if (!preg_match("/$reg/", $tmp)) {
- printf("[001] Cannot find MySQL PDO driver line in phpinfo() output\n");
- }
+ if (!preg_match("/$reg/", $tmp)) {
+ printf("[001] Cannot find MySQL PDO driver line in phpinfo() output\n");
+ }
- print "done!";
+ print "done!";
?>
--EXPECT--
done!
diff --git a/ext/pdo_mysql/tests/pdo_mysql_prepare_emulated.phpt b/ext/pdo_mysql/tests/pdo_mysql_prepare_emulated.phpt
index 8db812ee19..6fe2ff20ba 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_prepare_emulated.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_prepare_emulated.phpt
@@ -9,314 +9,314 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
-
- function prepex($offset, &$db, $query, $input_params = null, $error_info = null) {
-
- try {
-
- if (is_array($error_info) && isset($error_info['prepare']))
- $stmt = @$db->prepare($query);
- else
- $stmt = $db->prepare($query);
-
- if (is_array($error_info) && isset($error_info['prepare'])) {
- $tmp = $db->errorInfo();
-
- if (isset($error_info['prepare']['sqlstate']) &&
- ($error_info['prepare']['sqlstate'] !== $tmp[0])) {
- printf("[%03d] prepare() - expecting SQLSTATE '%s' got '%s'\n",
- $offset, $error_info['prepare']['sqlstate'], $tmp[0]);
- return false;
- }
-
- if (isset($error_info['prepare']['mysql']) &&
- ($error_info['prepare']['mysql'] !== $tmp[1])) {
- printf("[%03d] prepare() - expecting MySQL Code '%s' got '%s'\n",
- $offset, $error_info['prepare']['mysql'], $tmp[0]);
- return false;
- }
-
- return false;
- }
-
- if (is_null($input_params))
- $input_params = array();
-
- if (is_array($error_info) && isset($error_info['execute']))
- $ret = @$stmt->execute($input_params);
- else
- $ret = $stmt->execute($input_params);
-
- if (!is_bool($ret))
- printf("[%03d] PDO::execute() should return a boolean value, got %s/%s\n",
- var_export($ret, true), $ret);
-
- if (is_array($error_info) && isset($error_info['execute'])) {
- $tmp = $stmt->errorInfo();
-
- if (isset($error_info['execute']['sqlstate']) &&
- ($error_info['execute']['sqlstate'] !== $tmp[0])) {
- printf("[%03d] execute() - expecting SQLSTATE '%s' got '%s'\n",
- $offset, $error_info['execute']['sqlstate'], $tmp[0]);
- return false;
- }
-
- if (isset($error_info['execute']['mysql']) &&
- ($error_info['execute']['mysql'] !== $tmp[1])) {
- printf("[%03d] execute() - expecting MySQL Code '%s' got '%s'\n",
- $offset, $error_info['execute']['mysql'], $tmp[0]);
- return false;
- }
-
- return false;
- }
-
- } catch (PDOException $e) {
- printf("[%03d] %s, [%s} %s\n",
- $offset, $e->getMessage(),
- $db->errorCode(), implode(' ', $db->errorInfo()));
- return false;
- }
-
- return $stmt;
- }
-
- try {
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
- if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to switch to emulated prepared statements, test will fail\n");
-
- // TODO - that's PDO - you can prepare empty statements!
- prepex(3, $db, '',
- array(), array('execute' => array('sqlstate' => '42000')));
-
- // lets be fair and do the most simple SELECT first
- $stmt = prepex(4, $db, 'SELECT 1 as "one"');
- var_dump($stmt->fetch(PDO::FETCH_ASSOC));
-
- prepex(5, $db, 'DROP TABLE IF EXISTS test');
- prepex(6, $db, sprintf('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
- prepex(7, $db, "INSERT INTO test(id, label) VALUES(1, ':placeholder')");
- $stmt = prepex(8, $db, 'SELECT label FROM test');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
- prepex(9, $db, 'DELETE FROM test');
- prepex(10, $db, "INSERT INTO test(id, label) VALUES(1, ':placeholder')",
- array(':placeholder' => 'first row'));
- $stmt = prepex(11, $db, 'SELECT label FROM test');
-
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- prepex(12, $db, 'DELETE FROM test');
- prepex(13, $db, 'INSERT INTO test(id, label) VALUES(1, :placeholder)',
- array(':placeholder' => 'first row'));
- prepex(14, $db, 'INSERT INTO test(id, label) VALUES(2, :placeholder)',
- array(':placeholder' => 'second row'));
- $stmt = prepex(15, $db, 'SELECT label FROM test');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
- // Is PDO fun?
- prepex(16, $db, 'SELECT label FROM test WHERE :placeholder > 1',
- array(':placeholder' => 'id'));
- prepex(17, $db, 'SELECT :placeholder FROM test WHERE id > 1',
- array(':placeholder' => 'id'));
- prepex(18, $db, 'SELECT :placeholder FROM test WHERE :placeholder > :placeholder',
- array(':placeholder' => 'test'));
-
- for ($num_params = 2; $num_params < 100; $num_params++) {
- $params = array(':placeholder' => 'a');
- for ($i = 1; $i < $num_params; $i++) {
- $params[str_repeat('a', $i)] = 'some data';
- }
- prepex(19, $db, 'SELECT id, label FROM test WHERE label > :placeholder',
- $params, array('execute' => array('sqlstate' => 'HY093')));
- }
-
- prepex(20, $db, 'DELETE FROM test');
- prepex(21, $db, 'INSERT INTO test(id, label) VALUES (1, :placeholder), (2, :placeholder)',
- array(':placeholder' => 'row'));
- $stmt = prepex(22, $db, 'SELECT id, label FROM test');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
- $stmt = prepex(23, $db, 'SELECT id, label FROM test WHERE :placeholder IS NOT NULL',
- array(':placeholder' => 1));
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
- printf("[024] '1' IS NOT NULL evaluates to true, expecting two rows, got %d rows\n", $tmp);
-
- $stmt = prepex(25, $db, 'SELECT id, label FROM test WHERE :placeholder IS NULL',
- array(':placeholder' => 1));
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 0)
- printf("[026] '1' IS NOT NULL evaluates to true, expecting zero rows, got %d rows\n", $tmp);
-
- prepex(27, $db, 'DROP TABLE IF EXISTS test');
- prepex(28, $db, 'CREATE TABLE test(id INT, label CHAR(255)) ENGINE=MyISAM');
- if (is_object(prepex(29, $db, 'CREATE FULLTEXT INDEX idx1 ON test(label)'))) {
- prepex(30, $db, 'INSERT INTO test(id, label) VALUES (1, :placeholder)',
- array(':placeholder' => 'MySQL is the best database in the world!'));
- prepex(31, $db, 'INSERT INTO test(id, label) VALUES (1, :placeholder)',
- array(':placeholder' => 'If I have the freedom to choose, I would always go again for the MySQL Server'));
- $stmt = prepex(32, $db, 'SELECT id, label FROM test WHERE MATCH label AGAINST (:placeholder)',
- array(':placeholder' => 'mysql'));
- /*
- Lets ignore this
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
- printf("[033] Expecting two rows, got %d rows\n", $tmp);
- */
- }
- prepex(34, $db, 'DELETE FROM test');
- prepex(35, $db, 'INSERT INTO test(id, label) VALUES (1, :placeholder), (2, :placeholder)',
- array(':placeholder' => 'row'));
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+
+ function prepex($offset, &$db, $query, $input_params = null, $error_info = null) {
+
+ try {
+
+ if (is_array($error_info) && isset($error_info['prepare']))
+ $stmt = @$db->prepare($query);
+ else
+ $stmt = $db->prepare($query);
+
+ if (is_array($error_info) && isset($error_info['prepare'])) {
+ $tmp = $db->errorInfo();
+
+ if (isset($error_info['prepare']['sqlstate']) &&
+ ($error_info['prepare']['sqlstate'] !== $tmp[0])) {
+ printf("[%03d] prepare() - expecting SQLSTATE '%s' got '%s'\n",
+ $offset, $error_info['prepare']['sqlstate'], $tmp[0]);
+ return false;
+ }
+
+ if (isset($error_info['prepare']['mysql']) &&
+ ($error_info['prepare']['mysql'] !== $tmp[1])) {
+ printf("[%03d] prepare() - expecting MySQL Code '%s' got '%s'\n",
+ $offset, $error_info['prepare']['mysql'], $tmp[0]);
+ return false;
+ }
+
+ return false;
+ }
+
+ if (is_null($input_params))
+ $input_params = array();
+
+ if (is_array($error_info) && isset($error_info['execute']))
+ $ret = @$stmt->execute($input_params);
+ else
+ $ret = $stmt->execute($input_params);
+
+ if (!is_bool($ret))
+ printf("[%03d] PDO::execute() should return a boolean value, got %s/%s\n",
+ var_export($ret, true), $ret);
+
+ if (is_array($error_info) && isset($error_info['execute'])) {
+ $tmp = $stmt->errorInfo();
+
+ if (isset($error_info['execute']['sqlstate']) &&
+ ($error_info['execute']['sqlstate'] !== $tmp[0])) {
+ printf("[%03d] execute() - expecting SQLSTATE '%s' got '%s'\n",
+ $offset, $error_info['execute']['sqlstate'], $tmp[0]);
+ return false;
+ }
+
+ if (isset($error_info['execute']['mysql']) &&
+ ($error_info['execute']['mysql'] !== $tmp[1])) {
+ printf("[%03d] execute() - expecting MySQL Code '%s' got '%s'\n",
+ $offset, $error_info['execute']['mysql'], $tmp[0]);
+ return false;
+ }
+
+ return false;
+ }
+
+ } catch (PDOException $e) {
+ printf("[%03d] %s, [%s} %s\n",
+ $offset, $e->getMessage(),
+ $db->errorCode(), implode(' ', $db->errorInfo()));
+ return false;
+ }
+
+ return $stmt;
+ }
+
+ try {
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
+ if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to switch to emulated prepared statements, test will fail\n");
+
+ // TODO - that's PDO - you can prepare empty statements!
+ prepex(3, $db, '',
+ array(), array('execute' => array('sqlstate' => '42000')));
+
+ // lets be fair and do the most simple SELECT first
+ $stmt = prepex(4, $db, 'SELECT 1 as "one"');
+ var_dump($stmt->fetch(PDO::FETCH_ASSOC));
+
+ prepex(5, $db, 'DROP TABLE IF EXISTS test');
+ prepex(6, $db, sprintf('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
+ prepex(7, $db, "INSERT INTO test(id, label) VALUES(1, ':placeholder')");
+ $stmt = prepex(8, $db, 'SELECT label FROM test');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+ prepex(9, $db, 'DELETE FROM test');
+ prepex(10, $db, "INSERT INTO test(id, label) VALUES(1, ':placeholder')",
+ array(':placeholder' => 'first row'));
+ $stmt = prepex(11, $db, 'SELECT label FROM test');
+
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ prepex(12, $db, 'DELETE FROM test');
+ prepex(13, $db, 'INSERT INTO test(id, label) VALUES(1, :placeholder)',
+ array(':placeholder' => 'first row'));
+ prepex(14, $db, 'INSERT INTO test(id, label) VALUES(2, :placeholder)',
+ array(':placeholder' => 'second row'));
+ $stmt = prepex(15, $db, 'SELECT label FROM test');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+ // Is PDO fun?
+ prepex(16, $db, 'SELECT label FROM test WHERE :placeholder > 1',
+ array(':placeholder' => 'id'));
+ prepex(17, $db, 'SELECT :placeholder FROM test WHERE id > 1',
+ array(':placeholder' => 'id'));
+ prepex(18, $db, 'SELECT :placeholder FROM test WHERE :placeholder > :placeholder',
+ array(':placeholder' => 'test'));
+
+ for ($num_params = 2; $num_params < 100; $num_params++) {
+ $params = array(':placeholder' => 'a');
+ for ($i = 1; $i < $num_params; $i++) {
+ $params[str_repeat('a', $i)] = 'some data';
+ }
+ prepex(19, $db, 'SELECT id, label FROM test WHERE label > :placeholder',
+ $params, array('execute' => array('sqlstate' => 'HY093')));
+ }
+
+ prepex(20, $db, 'DELETE FROM test');
+ prepex(21, $db, 'INSERT INTO test(id, label) VALUES (1, :placeholder), (2, :placeholder)',
+ array(':placeholder' => 'row'));
+ $stmt = prepex(22, $db, 'SELECT id, label FROM test');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+ $stmt = prepex(23, $db, 'SELECT id, label FROM test WHERE :placeholder IS NOT NULL',
+ array(':placeholder' => 1));
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
+ printf("[024] '1' IS NOT NULL evaluates to true, expecting two rows, got %d rows\n", $tmp);
+
+ $stmt = prepex(25, $db, 'SELECT id, label FROM test WHERE :placeholder IS NULL',
+ array(':placeholder' => 1));
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 0)
+ printf("[026] '1' IS NOT NULL evaluates to true, expecting zero rows, got %d rows\n", $tmp);
+
+ prepex(27, $db, 'DROP TABLE IF EXISTS test');
+ prepex(28, $db, 'CREATE TABLE test(id INT, label CHAR(255)) ENGINE=MyISAM');
+ if (is_object(prepex(29, $db, 'CREATE FULLTEXT INDEX idx1 ON test(label)'))) {
+ prepex(30, $db, 'INSERT INTO test(id, label) VALUES (1, :placeholder)',
+ array(':placeholder' => 'MySQL is the best database in the world!'));
+ prepex(31, $db, 'INSERT INTO test(id, label) VALUES (1, :placeholder)',
+ array(':placeholder' => 'If I have the freedom to choose, I would always go again for the MySQL Server'));
+ $stmt = prepex(32, $db, 'SELECT id, label FROM test WHERE MATCH label AGAINST (:placeholder)',
+ array(':placeholder' => 'mysql'));
+ /*
+ Lets ignore this
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
+ printf("[033] Expecting two rows, got %d rows\n", $tmp);
+ */
+ }
+ prepex(34, $db, 'DELETE FROM test');
+ prepex(35, $db, 'INSERT INTO test(id, label) VALUES (1, :placeholder), (2, :placeholder)',
+ array(':placeholder' => 'row'));
/*
- $stmt = prepex(36, $db, 'SELECT id, label FROM "test WHERE MATCH label AGAINST (:placeholder)',
- array(':placeholder' => 'row'),
- array('execute' => array('sqlstate' => '42000', 'mysql' => 1064)));
+ $stmt = prepex(36, $db, 'SELECT id, label FROM "test WHERE MATCH label AGAINST (:placeholder)',
+ array(':placeholder' => 'row'),
+ array('execute' => array('sqlstate' => '42000', 'mysql' => 1064)));
*/
- $stmt = prepex(37, $db, 'SELECT id, label FROM \'test WHERE MATCH label AGAINST (:placeholder)',
- array(':placeholder' => 'row'),
- array('execute' => array('sqlstate' => '42000', 'mysql' => 1064)));
-
- $stmt = prepex(38, $db, 'SELECT id, label AS "label" FROM test WHERE label = :placeholder',
- array(':placeholder' => 'row'));
-
- $sql = sprintf("SELECT id, label FROM test WHERE (label LIKE %s) AND (id = :placeholder)",
- $db->quote('%ro%'));
- $stmt = prepex(39, $db, $sql, array('placeholder' => -1));
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 0)
- printf("[040] Expecting zero rows, got %d rows\n", $tmp);
-
-
- $sql = sprintf("SELECT id, label FROM test WHERE (id = :placeholder) OR (label LIKE %s)",
- $db->quote('%ro%'));
- $stmt = prepex(41, $db, $sql, array('placeholder' => 1));
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
- printf("[042] Expecting two rows, got %d rows\n", $tmp);
-
- $sql = "SELECT id, label FROM test WHERE id = :placeholder AND label = (SELECT label AS 'SELECT' FROM test WHERE id = :placeholder)";
- $stmt = prepex(43, $db, $sql, array('placeholder' => 1));
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 1)
- printf("[044] Expecting onw row, got %d rows\n", $tmp);
-
- // and now, the same with anonymous placeholders...
- prepex(45, $db, 'DROP TABLE IF EXISTS test');
- prepex(46, $db, sprintf('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
- prepex(47, $db, "INSERT INTO test(id, label) VALUES(1, '?')");
- $stmt = prepex(48, $db, 'SELECT label FROM test');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
- prepex(49, $db, 'DELETE FROM test');
- prepex(50, $db, "INSERT INTO test(id, label) VALUES(1, '?')",
- array('first row'));
- $stmt = prepex(51, $db, 'SELECT label FROM test');
-
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- prepex(52, $db, 'DELETE FROM test');
- prepex(53, $db, 'INSERT INTO test(id, label) VALUES(1, ?)',
- array('first row'));
- prepex(54, $db, 'INSERT INTO test(id, label) VALUES(2, ?)',
- array('second row'));
- $stmt = prepex(55, $db, 'SELECT label FROM test');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
- // Is PDO fun?
- prepex(56, $db, 'SELECT label FROM test WHERE ? > 1',
- array('id'));
- prepex(57, $db, 'SELECT ? FROM test WHERE id > 1',
- array('id'));
- prepex(58, $db, 'SELECT ? FROM test WHERE ? > ?',
- array('test'), array('execute' => array('sqlstate' => 'HY093')));
-
- prepex(59, $db, 'SELECT ? FROM test WHERE ? > ?',
- array('id', 'label', 'value'));
-
- for ($num_params = 2; $num_params < 100; $num_params++) {
- $params = array('a');
- for ($i = 1; $i < $num_params; $i++) {
- $params[] = 'some data';
- }
- prepex(60, $db, 'SELECT id, label FROM test WHERE label > ?',
- $params, array('execute' => array('sqlstate' => 'HY093')));
- }
-
- prepex(61, $db, 'DELETE FROM test');
- prepex(62, $db, 'INSERT INTO test(id, label) VALUES (1, ?), (2, ?)',
- array('row', 'row'));
- $stmt = prepex(63, $db, 'SELECT id, label FROM test');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
- $stmt = prepex(64, $db, 'SELECT id, label FROM test WHERE ? IS NOT NULL',
- array(1));
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
- printf("[065] '1' IS NOT NULL evaluates to true, expecting two rows, got %d rows\n", $tmp);
-
- $stmt = prepex(66, $db, 'SELECT id, label FROM test WHERE ? IS NULL',
- array(1));
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 0)
- printf("[067] '1' IS NOT NULL evaluates to true, expecting zero rows, got %d rows\n", $tmp);
-
- prepex(68, $db, 'DROP TABLE IF EXISTS test');
- prepex(69, $db, 'CREATE TABLE test(id INT, label CHAR(255)) ENGINE=MyISAM');
- if (is_object(prepex(70, $db, 'CREATE FULLTEXT INDEX idx1 ON test(label)'))) {
- prepex(71, $db, 'INSERT INTO test(id, label) VALUES (1, ?)',
- array('MySQL is the best database in the world!'));
- prepex(72, $db, 'INSERT INTO test(id, label) VALUES (1, ?)',
- array('If I have the freedom to choose, I would always go again for the MySQL Server'));
- $stmt = prepex(73, $db, 'SELECT id, label FROM test WHERE MATCH label AGAINST (?)',
- array('mysql'));
- /*
- Lets ignore that
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
- printf("[074] Expecting two rows, got %d rows\n", $tmp);
- */
- }
-
- prepex(74, $db, 'DELETE FROM test');
- prepex(75, $db, 'INSERT INTO test(id, label) VALUES (1, ?), (2, ?)',
- array('row', 'row'));
-
- $stmt = prepex(76, $db, 'SELECT id, label FROM "test WHERE MATCH label AGAINST (?)',
- array('row'),
- array('execute' => array('sqlstate' => '42000', 'mysql' => 1064)));
-
- /*
- TODO enable after fix
- $stmt = prepex(37, $db, 'SELECT id, label FROM \'test WHERE MATCH label AGAINST (:placeholder)',
- array(':placeholder' => 'row'),
- array('execute' => array('sqlstate' => '42000', 'mysql' => 1064)));
- */
-
- $stmt = prepex(78, $db, 'SELECT id, label AS "label" FROM test WHERE label = ?',
- array('row'));
-
- $sql = sprintf("SELECT id, label FROM test WHERE (label LIKE %s) AND (id = ?)",
- $db->quote('%ro%'));
- $stmt = prepex(79, $db, $sql, array(-1));
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 0)
- printf("[080] Expecting zero rows, got %d rows\n", $tmp);
-
-
- $sql = sprintf("SELECT id, label FROM test WHERE (id = ?) OR (label LIKE %s)",
- $db->quote('%ro%'));
- $stmt = prepex(81, $db, $sql, array(1));
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
- printf("[082] Expecting two rows, got %d rows\n", $tmp);
-
- $sql = "SELECT id, label FROM test WHERE id = ? AND label = (SELECT label AS 'SELECT' FROM test WHERE id = ?)";
- $stmt = prepex(83, $db, $sql, array(1, 1));
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 1)
- printf("[084] Expecting one row, got %d rows\n", $tmp);
-
- $sql = "SELECT id, label FROM test WHERE id = :placeholder AND label = (SELECT label AS 'SELECT' FROM test WHERE id = ?)";
- $stmt = prepex(85, $db, $sql, array(1, 1), array('execute' => array('sqlstate' => 'HY093')));
- if (is_object($stmt) && count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 0)
- printf("[086] Expecting no rows, got %d rows\n", $tmp);
-
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
-
- print "done!";
+ $stmt = prepex(37, $db, 'SELECT id, label FROM \'test WHERE MATCH label AGAINST (:placeholder)',
+ array(':placeholder' => 'row'),
+ array('execute' => array('sqlstate' => '42000', 'mysql' => 1064)));
+
+ $stmt = prepex(38, $db, 'SELECT id, label AS "label" FROM test WHERE label = :placeholder',
+ array(':placeholder' => 'row'));
+
+ $sql = sprintf("SELECT id, label FROM test WHERE (label LIKE %s) AND (id = :placeholder)",
+ $db->quote('%ro%'));
+ $stmt = prepex(39, $db, $sql, array('placeholder' => -1));
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 0)
+ printf("[040] Expecting zero rows, got %d rows\n", $tmp);
+
+
+ $sql = sprintf("SELECT id, label FROM test WHERE (id = :placeholder) OR (label LIKE %s)",
+ $db->quote('%ro%'));
+ $stmt = prepex(41, $db, $sql, array('placeholder' => 1));
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
+ printf("[042] Expecting two rows, got %d rows\n", $tmp);
+
+ $sql = "SELECT id, label FROM test WHERE id = :placeholder AND label = (SELECT label AS 'SELECT' FROM test WHERE id = :placeholder)";
+ $stmt = prepex(43, $db, $sql, array('placeholder' => 1));
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 1)
+ printf("[044] Expecting onw row, got %d rows\n", $tmp);
+
+ // and now, the same with anonymous placeholders...
+ prepex(45, $db, 'DROP TABLE IF EXISTS test');
+ prepex(46, $db, sprintf('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
+ prepex(47, $db, "INSERT INTO test(id, label) VALUES(1, '?')");
+ $stmt = prepex(48, $db, 'SELECT label FROM test');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+ prepex(49, $db, 'DELETE FROM test');
+ prepex(50, $db, "INSERT INTO test(id, label) VALUES(1, '?')",
+ array('first row'));
+ $stmt = prepex(51, $db, 'SELECT label FROM test');
+
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ prepex(52, $db, 'DELETE FROM test');
+ prepex(53, $db, 'INSERT INTO test(id, label) VALUES(1, ?)',
+ array('first row'));
+ prepex(54, $db, 'INSERT INTO test(id, label) VALUES(2, ?)',
+ array('second row'));
+ $stmt = prepex(55, $db, 'SELECT label FROM test');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+ // Is PDO fun?
+ prepex(56, $db, 'SELECT label FROM test WHERE ? > 1',
+ array('id'));
+ prepex(57, $db, 'SELECT ? FROM test WHERE id > 1',
+ array('id'));
+ prepex(58, $db, 'SELECT ? FROM test WHERE ? > ?',
+ array('test'), array('execute' => array('sqlstate' => 'HY093')));
+
+ prepex(59, $db, 'SELECT ? FROM test WHERE ? > ?',
+ array('id', 'label', 'value'));
+
+ for ($num_params = 2; $num_params < 100; $num_params++) {
+ $params = array('a');
+ for ($i = 1; $i < $num_params; $i++) {
+ $params[] = 'some data';
+ }
+ prepex(60, $db, 'SELECT id, label FROM test WHERE label > ?',
+ $params, array('execute' => array('sqlstate' => 'HY093')));
+ }
+
+ prepex(61, $db, 'DELETE FROM test');
+ prepex(62, $db, 'INSERT INTO test(id, label) VALUES (1, ?), (2, ?)',
+ array('row', 'row'));
+ $stmt = prepex(63, $db, 'SELECT id, label FROM test');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+ $stmt = prepex(64, $db, 'SELECT id, label FROM test WHERE ? IS NOT NULL',
+ array(1));
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
+ printf("[065] '1' IS NOT NULL evaluates to true, expecting two rows, got %d rows\n", $tmp);
+
+ $stmt = prepex(66, $db, 'SELECT id, label FROM test WHERE ? IS NULL',
+ array(1));
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 0)
+ printf("[067] '1' IS NOT NULL evaluates to true, expecting zero rows, got %d rows\n", $tmp);
+
+ prepex(68, $db, 'DROP TABLE IF EXISTS test');
+ prepex(69, $db, 'CREATE TABLE test(id INT, label CHAR(255)) ENGINE=MyISAM');
+ if (is_object(prepex(70, $db, 'CREATE FULLTEXT INDEX idx1 ON test(label)'))) {
+ prepex(71, $db, 'INSERT INTO test(id, label) VALUES (1, ?)',
+ array('MySQL is the best database in the world!'));
+ prepex(72, $db, 'INSERT INTO test(id, label) VALUES (1, ?)',
+ array('If I have the freedom to choose, I would always go again for the MySQL Server'));
+ $stmt = prepex(73, $db, 'SELECT id, label FROM test WHERE MATCH label AGAINST (?)',
+ array('mysql'));
+ /*
+ Lets ignore that
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
+ printf("[074] Expecting two rows, got %d rows\n", $tmp);
+ */
+ }
+
+ prepex(74, $db, 'DELETE FROM test');
+ prepex(75, $db, 'INSERT INTO test(id, label) VALUES (1, ?), (2, ?)',
+ array('row', 'row'));
+
+ $stmt = prepex(76, $db, 'SELECT id, label FROM "test WHERE MATCH label AGAINST (?)',
+ array('row'),
+ array('execute' => array('sqlstate' => '42000', 'mysql' => 1064)));
+
+ /*
+ TODO enable after fix
+ $stmt = prepex(37, $db, 'SELECT id, label FROM \'test WHERE MATCH label AGAINST (:placeholder)',
+ array(':placeholder' => 'row'),
+ array('execute' => array('sqlstate' => '42000', 'mysql' => 1064)));
+ */
+
+ $stmt = prepex(78, $db, 'SELECT id, label AS "label" FROM test WHERE label = ?',
+ array('row'));
+
+ $sql = sprintf("SELECT id, label FROM test WHERE (label LIKE %s) AND (id = ?)",
+ $db->quote('%ro%'));
+ $stmt = prepex(79, $db, $sql, array(-1));
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 0)
+ printf("[080] Expecting zero rows, got %d rows\n", $tmp);
+
+
+ $sql = sprintf("SELECT id, label FROM test WHERE (id = ?) OR (label LIKE %s)",
+ $db->quote('%ro%'));
+ $stmt = prepex(81, $db, $sql, array(1));
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
+ printf("[082] Expecting two rows, got %d rows\n", $tmp);
+
+ $sql = "SELECT id, label FROM test WHERE id = ? AND label = (SELECT label AS 'SELECT' FROM test WHERE id = ?)";
+ $stmt = prepex(83, $db, $sql, array(1, 1));
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 1)
+ printf("[084] Expecting one row, got %d rows\n", $tmp);
+
+ $sql = "SELECT id, label FROM test WHERE id = :placeholder AND label = (SELECT label AS 'SELECT' FROM test WHERE id = ?)";
+ $stmt = prepex(85, $db, $sql, array(1, 1), array('execute' => array('sqlstate' => 'HY093')));
+ if (is_object($stmt) && count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 0)
+ printf("[086] Expecting no rows, got %d rows\n", $tmp);
+
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
+
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_prepare_emulated_anonymous.phpt b/ext/pdo_mysql/tests/pdo_mysql_prepare_emulated_anonymous.phpt
index e8b5cb39ae..abd2615ce8 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_prepare_emulated_anonymous.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_prepare_emulated_anonymous.phpt
@@ -9,54 +9,54 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- try {
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
- if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to switch to emulated prepared statements, test will fail\n");
+ try {
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
+ if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to switch to emulated prepared statements, test will fail\n");
- $db->exec('DROP TABLE IF EXISTS test');
- $db->exec(sprintf('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
+ $db->exec('DROP TABLE IF EXISTS test');
+ $db->exec(sprintf('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
- $stmt = $db->prepare("INSERT INTO test(id, label) VALUES(1, '?')");
- // you can bind as many values as you want no matter if they can be replaced or not
- $stmt->execute(array('first row'));
- if ('00000' !== $stmt->errorCode())
- printf("[003] Execute has failed, %s %s\n",
- var_export($stmt->errorCode(), true),
- var_export($stmt->errorInfo(), true));
+ $stmt = $db->prepare("INSERT INTO test(id, label) VALUES(1, '?')");
+ // you can bind as many values as you want no matter if they can be replaced or not
+ $stmt->execute(array('first row'));
+ if ('00000' !== $stmt->errorCode())
+ printf("[003] Execute has failed, %s %s\n",
+ var_export($stmt->errorCode(), true),
+ var_export($stmt->errorInfo(), true));
- $stmt = $db->prepare('SELECT id, label FROM test');
- $stmt->execute();
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt = $db->prepare('SELECT id, label FROM test');
+ $stmt->execute();
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- // now the same with native PS
- printf("now the same with native PS\n");
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[004] Unable to switch off emulated prepared statements, test will fail\n");
+ // now the same with native PS
+ printf("now the same with native PS\n");
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[004] Unable to switch off emulated prepared statements, test will fail\n");
- $db->exec('DELETE FROM test');
- $stmt = $db->prepare("INSERT INTO test(id, label) VALUES(1, '?')");
- // you can bind as many values as you want no matter if they can be replaced or not
- $stmt->execute(array('first row'));
- if ('00000' !== $stmt->errorCode())
- printf("[005] Execute has failed, %s %s\n",
- var_export($stmt->errorCode(), true),
- var_export($stmt->errorInfo(), true));
+ $db->exec('DELETE FROM test');
+ $stmt = $db->prepare("INSERT INTO test(id, label) VALUES(1, '?')");
+ // you can bind as many values as you want no matter if they can be replaced or not
+ $stmt->execute(array('first row'));
+ if ('00000' !== $stmt->errorCode())
+ printf("[005] Execute has failed, %s %s\n",
+ var_export($stmt->errorCode(), true),
+ var_export($stmt->errorInfo(), true));
- $stmt = $db->prepare('SELECT id, label FROM test');
- $stmt->execute();
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt = $db->prepare('SELECT id, label FROM test');
+ $stmt->execute();
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_prepare_emulated_placeholder_everywhere.phpt b/ext/pdo_mysql/tests/pdo_mysql_prepare_emulated_placeholder_everywhere.phpt
index 5ad3c85641..e47b03b999 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_prepare_emulated_placeholder_everywhere.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_prepare_emulated_placeholder_everywhere.phpt
@@ -9,50 +9,50 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- try {
- // native PS
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to switch off emulated prepared statements, test will fail\n");
+ try {
+ // native PS
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to switch off emulated prepared statements, test will fail\n");
- $db->exec('DROP TABLE IF EXISTS test');
- $db->exec(sprintf('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
- $db->exec("INSERT INTO test(id, label) VALUES (1, 'row1')");
+ $db->exec('DROP TABLE IF EXISTS test');
+ $db->exec(sprintf('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
+ $db->exec("INSERT INTO test(id, label) VALUES (1, 'row1')");
- // So, what will happen? More placeholder but values and
- // placeholders in interesting places...
- $stmt = $db->prepare('SELECT ? FROM test WHERE ? > ?');
- $stmt->execute(array('test'));
- if ('00000' !== $stmt->errorCode()) {
- printf("[003] Execute has failed, %s %s\n",
- var_export($stmt->errorCode(), true),
- var_export($stmt->errorInfo(), true));
- }
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ // So, what will happen? More placeholder but values and
+ // placeholders in interesting places...
+ $stmt = $db->prepare('SELECT ? FROM test WHERE ? > ?');
+ $stmt->execute(array('test'));
+ if ('00000' !== $stmt->errorCode()) {
+ printf("[003] Execute has failed, %s %s\n",
+ var_export($stmt->errorCode(), true),
+ var_export($stmt->errorInfo(), true));
+ }
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- // now the same with emulated PS
- printf("now the same with emulated PS\n");
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
- if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[004] Unable to switch on emulated prepared statements, test will fail\n");
+ // now the same with emulated PS
+ printf("now the same with emulated PS\n");
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
+ if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[004] Unable to switch on emulated prepared statements, test will fail\n");
- $stmt = $db->prepare('SELECT ? FROM test WHERE ? > ?');
- $stmt->execute(array('test'));
- if ('00000' !== $stmt->errorCode())
- printf("[005] Execute has failed, %s %s\n",
- var_export($stmt->errorCode(), true),
- var_export($stmt->errorInfo(), true));
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt = $db->prepare('SELECT ? FROM test WHERE ? > ?');
+ $stmt->execute(array('test'));
+ if ('00000' !== $stmt->errorCode())
+ printf("[005] Execute has failed, %s %s\n",
+ var_export($stmt->errorCode(), true),
+ var_export($stmt->errorInfo(), true));
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_prepare_load_data.phpt b/ext/pdo_mysql/tests/pdo_mysql_prepare_load_data.phpt
index 0e7dc4b3ab..c76a7460c9 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_prepare_load_data.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_prepare_load_data.phpt
@@ -30,89 +30,89 @@ if (($row = $stmt->fetch(PDO::FETCH_ASSOC)) && ($row['value'] != '')) {
?>
--FILE--
<?php
- function exec_and_count($offset, &$db, $sql, $exp) {
-
- try {
-
- $ret = $db->exec($sql);
- if ($ret !== $exp) {
- printf("[%03d] Expecting '%s'/%s got '%s'/%s when running '%s', [%s] %s\n",
- $offset, $exp, gettype($exp), $ret, gettype($ret), $sql,
- $db->errorCode(), implode(' ', $db->errorInfo()));
- return false;
- }
-
- } catch (PDOException $e) {
-
- if (42000 == $db->errorCode()) {
- // Error: 1148 SQLSTATE: 42000 (ER_NOT_ALLOWED_COMMAND)
- // Load data infile not allowed
- return false;
- }
-
- printf("[%03d] '%s' has failed, [%s] %s\n",
- $offset, $sql, $db->errorCode(), implode(' ', $db->errorInfo()));
- return false;
- }
-
- return true;
- }
-
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- // Run with native PS.
- // The test is about checking the fallback to emulation
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
- MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
-
- /* affected rows related */
- try {
-
- exec_and_count(2, $db, 'DROP TABLE IF EXISTS test', 0);
- exec_and_count(3, $db, sprintf('CREATE TABLE test(id INT NOT NULL PRIMARY KEY, col1 CHAR(10)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE), 0);
-
- $stmt = $db->query("SHOW VARIABLES LIKE 'secure_file_priv'");
- if (($row = $stmt->fetch(PDO::FETCH_ASSOC)) && ($row['value'] != '')) {
- $filename = $row['value'] . DIRECTORY_SEPARATOR . "pdo_mysql_exec_load_data.csv";
- } else {
- $filename = MySQLPDOTest::getTempDir() . DIRECTORY_SEPARATOR . "pdo_mysql_exec_load_data.csv";
- }
-
- $fp = fopen($filename, "w");
- fwrite($fp, "1;foo\n");
- fwrite($fp, "2;bar");
- fclose($fp);
-
- // This should fail, the PS protocol should not support it.
- // mysqlnd will give 2014 as a follow-up of the fallback logic
- // libmysql will give a little more precise 2030 error code
- // However, you get an error and the big question is what happens to the line
- $stmt = $db->prepare(sprintf("LOAD DATA INFILE %s INTO TABLE test FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'", $db->quote($filename)));
- if (!$stmt->execute()) {
- printf("[004] [%d] %s\n", $stmt->errorCode(), var_export($stmt->errorInfo(), true));
- }
-
- // Check the line
- $stmt = $db->query("SELECT 1 as 'one'");
- if ($stmt->errorCode() != '0000') {
- printf("[005] [%d] %s\n", $stmt->errorCode(), var_export($stmt->errorInfo(), true));
- } else {
- $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
- if (!isset($rows[0]['one']) || $rows[0]['one'] != 1)
- printf("[006] [%d] %s\n", $stmt->errorCode(), var_export($stmt->errorInfo(), true));
- }
-
- unlink($filename);
-
- } catch (PDOException $e) {
- printf("[001] %s, [%s] %s (%s)\n",
- $e->getMessage(),
- $db->errorCode(),
- implode(' ', $db->errorInfo()),
- (isset($stmt)) ? implode(' ', $stmt->errorInfo()) : 'N/A');
- }
-
- print "done!";
+ function exec_and_count($offset, &$db, $sql, $exp) {
+
+ try {
+
+ $ret = $db->exec($sql);
+ if ($ret !== $exp) {
+ printf("[%03d] Expecting '%s'/%s got '%s'/%s when running '%s', [%s] %s\n",
+ $offset, $exp, gettype($exp), $ret, gettype($ret), $sql,
+ $db->errorCode(), implode(' ', $db->errorInfo()));
+ return false;
+ }
+
+ } catch (PDOException $e) {
+
+ if (42000 == $db->errorCode()) {
+ // Error: 1148 SQLSTATE: 42000 (ER_NOT_ALLOWED_COMMAND)
+ // Load data infile not allowed
+ return false;
+ }
+
+ printf("[%03d] '%s' has failed, [%s] %s\n",
+ $offset, $sql, $db->errorCode(), implode(' ', $db->errorInfo()));
+ return false;
+ }
+
+ return true;
+ }
+
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ // Run with native PS.
+ // The test is about checking the fallback to emulation
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
+ MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
+
+ /* affected rows related */
+ try {
+
+ exec_and_count(2, $db, 'DROP TABLE IF EXISTS test', 0);
+ exec_and_count(3, $db, sprintf('CREATE TABLE test(id INT NOT NULL PRIMARY KEY, col1 CHAR(10)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE), 0);
+
+ $stmt = $db->query("SHOW VARIABLES LIKE 'secure_file_priv'");
+ if (($row = $stmt->fetch(PDO::FETCH_ASSOC)) && ($row['value'] != '')) {
+ $filename = $row['value'] . DIRECTORY_SEPARATOR . "pdo_mysql_exec_load_data.csv";
+ } else {
+ $filename = MySQLPDOTest::getTempDir() . DIRECTORY_SEPARATOR . "pdo_mysql_exec_load_data.csv";
+ }
+
+ $fp = fopen($filename, "w");
+ fwrite($fp, "1;foo\n");
+ fwrite($fp, "2;bar");
+ fclose($fp);
+
+ // This should fail, the PS protocol should not support it.
+ // mysqlnd will give 2014 as a follow-up of the fallback logic
+ // libmysql will give a little more precise 2030 error code
+ // However, you get an error and the big question is what happens to the line
+ $stmt = $db->prepare(sprintf("LOAD DATA INFILE %s INTO TABLE test FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'", $db->quote($filename)));
+ if (!$stmt->execute()) {
+ printf("[004] [%d] %s\n", $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+ }
+
+ // Check the line
+ $stmt = $db->query("SELECT 1 as 'one'");
+ if ($stmt->errorCode() != '0000') {
+ printf("[005] [%d] %s\n", $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+ } else {
+ $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
+ if (!isset($rows[0]['one']) || $rows[0]['one'] != 1)
+ printf("[006] [%d] %s\n", $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+ }
+
+ unlink($filename);
+
+ } catch (PDOException $e) {
+ printf("[001] %s, [%s] %s (%s)\n",
+ $e->getMessage(),
+ $db->errorCode(),
+ implode(' ', $db->errorInfo()),
+ (isset($stmt)) ? implode(' ', $stmt->errorInfo()) : 'N/A');
+ }
+
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_prepare_match_against.phpt b/ext/pdo_mysql/tests/pdo_mysql_prepare_match_against.phpt
index f77c420d67..9c5b953a52 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_prepare_match_against.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_prepare_match_against.phpt
@@ -8,35 +8,35 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- try {
+ try {
- $db->exec('DROP TABLE IF EXISTS test');
- $db->exec('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=MyISAM');
- $db->exec('CREATE FULLTEXT INDEX idx1 ON test(label)');
+ $db->exec('DROP TABLE IF EXISTS test');
+ $db->exec('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=MyISAM');
+ $db->exec('CREATE FULLTEXT INDEX idx1 ON test(label)');
- $stmt = $db->prepare('SELECT id, label FROM test WHERE MATCH label AGAINST (:placeholder)');
- $stmt->execute(array(':placeholder' => 'row'));
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt = $db->prepare('SELECT id, label FROM test WHERE MATCH label AGAINST (:placeholder)');
+ $stmt->execute(array(':placeholder' => 'row'));
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- $stmt = $db->prepare('SELECT id, label FROM test WHERE MATCH label AGAINST (:placeholder)');
- $stmt->execute(array('placeholder' => 'row'));
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt = $db->prepare('SELECT id, label FROM test WHERE MATCH label AGAINST (:placeholder)');
+ $stmt->execute(array('placeholder' => 'row'));
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- $stmt = $db->prepare('SELECT id, label FROM test WHERE MATCH label AGAINST (?)');
- $stmt->execute(array('row'));
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt = $db->prepare('SELECT id, label FROM test WHERE MATCH label AGAINST (?)');
+ $stmt->execute(array('row'));
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- } catch (PDOException $e) {
+ } catch (PDOException $e) {
- printf("[001] %s, [%s} %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ printf("[001] %s, [%s} %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ }
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_prepare_native.phpt b/ext/pdo_mysql/tests/pdo_mysql_prepare_native.phpt
index efd472edc6..5ea3e94c1e 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_prepare_native.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_prepare_native.phpt
@@ -9,331 +9,331 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- function prepex($offset, &$db, $query, $input_params = null, $error_info = null, $suppress_warning = false) {
+ function prepex($offset, &$db, $query, $input_params = null, $error_info = null, $suppress_warning = false) {
- try {
+ try {
- if ($suppress_warning || (is_array($error_info) && isset($error_info['prepare'])))
- $stmt = @$db->prepare($query);
- else
- $stmt = $db->prepare($query);
+ if ($suppress_warning || (is_array($error_info) && isset($error_info['prepare'])))
+ $stmt = @$db->prepare($query);
+ else
+ $stmt = $db->prepare($query);
- if (is_array($error_info) && isset($error_info['prepare'])) {
- $tmp = $db->errorInfo();
+ if (is_array($error_info) && isset($error_info['prepare'])) {
+ $tmp = $db->errorInfo();
- if (isset($error_info['prepare']['sqlstate']) &&
- ($error_info['prepare']['sqlstate'] !== $tmp[0])) {
- printf("[%03d] prepare() - expecting SQLSTATE '%s' got '%s'\n",
- $offset, $error_info['prepare']['sqlstate'], $tmp[0]);
- return false;
- }
+ if (isset($error_info['prepare']['sqlstate']) &&
+ ($error_info['prepare']['sqlstate'] !== $tmp[0])) {
+ printf("[%03d] prepare() - expecting SQLSTATE '%s' got '%s'\n",
+ $offset, $error_info['prepare']['sqlstate'], $tmp[0]);
+ return false;
+ }
- if (isset($error_info['prepare']['mysql']) &&
- ($error_info['prepare']['mysql'] !== $tmp[1])) {
- printf("[%03d] prepare() - expecting MySQL Code '%s' got '%s'\n",
- $offset, $error_info['prepare']['mysql'], $tmp[0]);
- return false;
- }
+ if (isset($error_info['prepare']['mysql']) &&
+ ($error_info['prepare']['mysql'] !== $tmp[1])) {
+ printf("[%03d] prepare() - expecting MySQL Code '%s' got '%s'\n",
+ $offset, $error_info['prepare']['mysql'], $tmp[0]);
+ return false;
+ }
- return false;
- }
+ return false;
+ }
- if (!is_object($stmt))
- return false;
+ if (!is_object($stmt))
+ return false;
- if (is_null($input_params))
- $input_params = array();
+ if (is_null($input_params))
+ $input_params = array();
// 5.0.18, 5.1.14 @ 15
// printf("[%03d]\n", $offset);
- if ($suppress_warning || (is_array($error_info) && isset($error_info['execute'])))
- $ret = @$stmt->execute($input_params);
- else
- $ret = $stmt->execute($input_params);
-
- if (!is_bool($ret))
- printf("[%03d] PDO::execute() should return a boolean value, got %s/%s\n",
- var_export($ret, true), $ret);
-
- $tmp = $stmt->errorInfo();
- if (isset($tmp[1]) && ($tmp[1] == 2030)) {
- // Trying to hack around MySQL Server version dependent features
- // 2030 This command is not supported in the prepared statement protocol yet
- return false;
- }
-
- if (is_array($error_info) && isset($error_info['execute'])) {
-
- if (isset($error_info['execute']['sqlstate']) &&
- ($error_info['execute']['sqlstate'] !== $tmp[0])) {
- printf("[%03d] execute() - expecting SQLSTATE '%s' got '%s'\n",
- $offset, $error_info['execute']['sqlstate'], $tmp[0]);
- return false;
- }
-
- if (isset($error_info['execute']['mysql']) &&
- ($error_info['execute']['mysql'] !== $tmp[1])) {
- printf("[%03d] execute() - expecting MySQL Code '%s' got '%s'\n",
- $offset, $error_info['execute']['mysql'], $tmp[0]);
- return false;
- }
-
- return false;
-
- }
-
- } catch (PDOException $e) {
- printf("[%03d] %s, [%s} %s\n",
- $offset, $e->getMessage(),
- $db->errorCode(), implode(' ', $db->errorInfo()));
- return false;
- }
-
- return $stmt;
- }
-
- try {
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to turn off emulated prepared statements\n");
-
- // TODO - that's PDO - you can prepare empty statements!
- prepex(3, $db, '',
- array(), array('prepare' => array('sqlstate' => '42000')));
-
- // lets be fair and do the most simple SELECT first
- $stmt = prepex(4, $db, 'SELECT 1 as "one"');
- if (MySQLPDOTest::isPDOMySQLnd())
- // native types - int
- $expected = array('one' => 1);
- else
- // always strings, like STRINGIFY flag
- $expected = array('one' => '1');
-
- $row = $stmt->fetch(PDO::FETCH_ASSOC);
- if ($row !== $expected) {
- printf("[004a] Expecting %s got %s\n", var_export($expected, true), var_export($row, true));
- }
-
- prepex(5, $db, 'DROP TABLE IF EXISTS test');
- prepex(6, $db, sprintf('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
- prepex(7, $db, "INSERT INTO test(id, label) VALUES(1, ':placeholder')");
- $stmt = prepex(8, $db, 'SELECT label FROM test ORDER BY id ASC');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
- prepex(9, $db, 'DELETE FROM test');
- prepex(10, $db, 'INSERT INTO test(id, label) VALUES(1, :placeholder)',
- array(':placeholder' => 'first row'));
- prepex(11, $db, 'INSERT INTO test(id, label) VALUES(2, :placeholder)',
- array(':placeholder' => 'second row'));
- $stmt = prepex(12, $db, 'SELECT label FROM test ORDER BY id ASC');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
- // Is PDO fun?
- $stmt = prepex(13, $db, 'SELECT label FROM test WHERE :placeholder > 1',
- array(':placeholder' => 'id'));
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
- for ($num_params = 2; $num_params < 100; $num_params++) {
- $params = array(':placeholder' => 'a');
- for ($i = 1; $i < $num_params; $i++) {
- $params[str_repeat('a', $i)] = 'some data';
- }
- prepex(16, $db, 'SELECT id, label FROM test WHERE label > :placeholder',
- $params, array('execute' => array('sqlstate' => 'HY093')));
- }
-
- $stmt = prepex(16, $db, 'SELECT id, label FROM test WHERE :placeholder IS NOT NULL',
- array(':placeholder' => 1));
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
- printf("[017] '1' IS NOT NULL evaluates to true, expecting two rows, got %d rows\n", $tmp);
-
- $stmt = prepex(18, $db, 'SELECT id, label FROM test WHERE :placeholder IS NULL',
- array(':placeholder' => 1));
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 0)
- printf("[019] '1' IS NOT NULL evaluates to true, expecting zero rows, got %d rows\n", $tmp);
-
- prepex(20, $db, 'DROP TABLE IF EXISTS test');
- prepex(21, $db, 'CREATE TABLE test(id INT, label CHAR(255)) ENGINE=MyISAM');
- // Not every MySQL Server version supports this
- if (is_object(prepex(22, $db, 'CREATE FULLTEXT INDEX idx1 ON test(label)', null, null, true))) {
- prepex(23, $db, 'INSERT INTO test(id, label) VALUES (1, :placeholder)',
- array(':placeholder' => 'MySQL is the best database in the world!'));
- prepex(24, $db, 'INSERT INTO test(id, label) VALUES (2, :placeholder)',
- array(':placeholder' => 'If I have the freedom to choose, I would always go again for the MySQL Server'));
- $stmt = prepex(25, $db, 'SELECT id, label FROM test WHERE MATCH label AGAINST (:placeholder)',
- array(':placeholder' => 'mysql'), null, true);
- if (is_object($stmt)) {
- /*
- Lets ignore this
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
- printf("[033] Expecting two rows, got %d rows\n", $tmp);
- */
- $stmt = prepex(26, $db, 'SELECT id, label FROM test ORDER BY id ASC');
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
- printf("[027] Expecting two rows, got %d rows\n", $tmp);
-
- if ($tmp[0]['label'] !== 'MySQL is the best database in the world!') {
- printf("[028] INSERT seems to have failed, dumping data, check manually\n");
- var_dump($tmp);
- }
- }
- }
-
- $db->exec('DELETE FROM test');
- $db->exec("INSERT INTO test(id, label) VALUES (1, 'row1')");
- $db->exec("INSERT INTO test(id, label) VALUES (2, 'row2')");
-
- $sql = sprintf("SELECT id, label FROM test WHERE (label LIKE %s) AND (id = :placeholder)",
- $db->quote('%ro%'));
- $stmt = prepex(29, $db, $sql, array('placeholder' => -1));
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 0)
- printf("[030] Expecting zero rows, got %d rows\n", $tmp);
-
- $sql = sprintf("SELECT id, label FROM test WHERE (id = :placeholder) OR (label LIKE %s)",
- $db->quote('%go%'));
- $stmt = prepex(31, $db, $sql, array('placeholder' => 1));
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 1)
- printf("[032] Expecting one row, got %d rows\n", $tmp);
-
- // and now, the same with anonymous placeholders...
- prepex(33, $db, 'DROP TABLE IF EXISTS test');
- prepex(34, $db, sprintf('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
- prepex(35, $db, "INSERT INTO test(id, label) VALUES(1, '?')");
- $stmt = prepex(36, $db, 'SELECT label FROM test');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
- prepex(37, $db, 'DELETE FROM test');
- prepex(38, $db, 'INSERT INTO test(id, label) VALUES(1, ?)',
- array('first row'));
- prepex(39, $db, 'INSERT INTO test(id, label) VALUES(2, ?)',
- array('second row'));
- $stmt = prepex(40, $db, 'SELECT label FROM test');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
- // Is PDO fun?
- prepex(40, $db, 'SELECT label FROM test WHERE ? > 1',
- array('id'));
- prepex(41, $db, 'SELECT ? FROM test WHERE id > 1',
- array('id'));
- prepex(42, $db, 'SELECT ? FROM test WHERE ? > ?',
- array('id', 'label', 'value'));
-
- for ($num_params = 2; $num_params < 100; $num_params++) {
- $params = array('a');
- for ($i = 1; $i < $num_params; $i++) {
- $params[] = 'some data';
- }
- prepex(43, $db, 'SELECT id, label FROM test WHERE label > ?',
- $params, array('execute' => array('sqlstate' => 'HY093')));
- }
-
- prepex(44, $db, 'DELETE FROM test');
- prepex(45, $db, 'INSERT INTO test(id, label) VALUES (1, ?), (2, ?)',
- array('row', 'row'));
- $stmt = prepex(46, $db, 'SELECT id, label FROM test ORDER BY id');
- $tmp = $stmt->fetchAll(PDO::FETCH_ASSOC);
- $exp = array(
- 0 => array(
- "id" => "1",
- "label" => "row"
- ),
- 1 => array(
- "id" => "2",
- "label" => "row"
- ),
- );
-
- if (MySQLPDOTest::isPDOMySQLnd()) {
- // mysqlnd returns native types
- $exp[0]['id'] = 1;
- $exp[1]['id'] = 2;
- }
- if ($tmp !== $exp) {
- printf("[064] Results seem wrong. Please check dumps manually.\n");
- var_dump($exp);
- var_dump($tmp);
- }
-
- $stmt = prepex(47, $db, 'SELECT id, label FROM test WHERE ? IS NOT NULL',
- array(1));
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
- printf("[048] '1' IS NOT NULL evaluates to true, expecting two rows, got %d rows\n", $tmp);
-
- $stmt = prepex(49, $db, 'SELECT id, label FROM test WHERE ? IS NULL',
- array(1));
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 0)
- printf("[050] '1' IS NOT NULL evaluates to true, expecting zero rows, got %d rows\n", $tmp);
-
- prepex(51, $db, 'DROP TABLE IF EXISTS test');
- prepex(52, $db, 'CREATE TABLE test(id INT, label CHAR(255)) ENGINE=MyISAM');
- if (is_object(prepex(53, $db, 'CREATE FULLTEXT INDEX idx1 ON test(label)', null, null, true))) {
- prepex(54, $db, 'INSERT INTO test(id, label) VALUES (1, ?)',
- array('MySQL is the best database in the world!'));
- prepex(55, $db, 'INSERT INTO test(id, label) VALUES (1, ?)',
- array('If I have the freedom to choose, I would always go again for the MySQL Server'));
- $stmt = prepex(56, $db, 'SELECT id, label FROM test WHERE MATCH label AGAINST (?)',
- array('mysql'), null, true);
- /*
- Lets ignore that
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
- printf("[074] Expecting two rows, got %d rows\n", $tmp);
- */
- }
-
- prepex(57, $db, 'DELETE FROM test');
- prepex(58, $db, 'INSERT INTO test(id, label) VALUES (1, ?), (2, ?)',
- array('row1', 'row2'));
-
- /*
- TODO enable after fix
- $stmt = prepex(37, $db, 'SELECT id, label FROM \'test WHERE MATCH label AGAINST (:placeholder)',
- array(':placeholder' => 'row'),
- array('execute' => array('sqlstate' => '42000', 'mysql' => 1064)));
- */
-
- $stmt = prepex(59, $db, 'SELECT id, label AS "label" FROM test WHERE label = ?',
- array('row1'));
- $tmp = $stmt->fetchAll(PDO::FETCH_ASSOC);
- $exp = array(
- 0 => array("id" => "1", "label" => "row1")
- );
-
- if (MySQLPDOTest::isPDOMySQLnd()) {
- // mysqlnd returns native types
- $exp[0]['id'] = 1;
- }
- if ($tmp !== $exp) {
- printf("[065] Results seem wrong. Please check dumps manually.\n");
- var_dump($exp);
- var_dump($tmp);
- }
-
- $sql = sprintf("SELECT id, label FROM test WHERE (label LIKE %s) AND (id = ?)",
- $db->quote('%ro%'));
- $stmt = prepex(60, $db, $sql, array(-1));
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 0)
- printf("[061] Expecting zero rows, got %d rows\n", $tmp);
-
- $sql = sprintf("SELECT id, label FROM test WHERE (id = ?) OR (label LIKE %s)",
- $db->quote('%ro%'));
- $stmt = prepex(61, $db, $sql, array(1));
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
- printf("[062] Expecting two rows, got %d rows\n", $tmp);
-
- $sql = "SELECT id, label FROM test WHERE id = ? AND label = (SELECT label AS 'SELECT' FROM test WHERE id = ?)";
- $stmt = prepex(63, $db, $sql, array(1, 1));
- if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 1)
- printf("[064] Expecting one row, got %d rows\n", $tmp);
-
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
-
- print "done!";
+ if ($suppress_warning || (is_array($error_info) && isset($error_info['execute'])))
+ $ret = @$stmt->execute($input_params);
+ else
+ $ret = $stmt->execute($input_params);
+
+ if (!is_bool($ret))
+ printf("[%03d] PDO::execute() should return a boolean value, got %s/%s\n",
+ var_export($ret, true), $ret);
+
+ $tmp = $stmt->errorInfo();
+ if (isset($tmp[1]) && ($tmp[1] == 2030)) {
+ // Trying to hack around MySQL Server version dependent features
+ // 2030 This command is not supported in the prepared statement protocol yet
+ return false;
+ }
+
+ if (is_array($error_info) && isset($error_info['execute'])) {
+
+ if (isset($error_info['execute']['sqlstate']) &&
+ ($error_info['execute']['sqlstate'] !== $tmp[0])) {
+ printf("[%03d] execute() - expecting SQLSTATE '%s' got '%s'\n",
+ $offset, $error_info['execute']['sqlstate'], $tmp[0]);
+ return false;
+ }
+
+ if (isset($error_info['execute']['mysql']) &&
+ ($error_info['execute']['mysql'] !== $tmp[1])) {
+ printf("[%03d] execute() - expecting MySQL Code '%s' got '%s'\n",
+ $offset, $error_info['execute']['mysql'], $tmp[0]);
+ return false;
+ }
+
+ return false;
+
+ }
+
+ } catch (PDOException $e) {
+ printf("[%03d] %s, [%s} %s\n",
+ $offset, $e->getMessage(),
+ $db->errorCode(), implode(' ', $db->errorInfo()));
+ return false;
+ }
+
+ return $stmt;
+ }
+
+ try {
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to turn off emulated prepared statements\n");
+
+ // TODO - that's PDO - you can prepare empty statements!
+ prepex(3, $db, '',
+ array(), array('prepare' => array('sqlstate' => '42000')));
+
+ // lets be fair and do the most simple SELECT first
+ $stmt = prepex(4, $db, 'SELECT 1 as "one"');
+ if (MySQLPDOTest::isPDOMySQLnd())
+ // native types - int
+ $expected = array('one' => 1);
+ else
+ // always strings, like STRINGIFY flag
+ $expected = array('one' => '1');
+
+ $row = $stmt->fetch(PDO::FETCH_ASSOC);
+ if ($row !== $expected) {
+ printf("[004a] Expecting %s got %s\n", var_export($expected, true), var_export($row, true));
+ }
+
+ prepex(5, $db, 'DROP TABLE IF EXISTS test');
+ prepex(6, $db, sprintf('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
+ prepex(7, $db, "INSERT INTO test(id, label) VALUES(1, ':placeholder')");
+ $stmt = prepex(8, $db, 'SELECT label FROM test ORDER BY id ASC');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+ prepex(9, $db, 'DELETE FROM test');
+ prepex(10, $db, 'INSERT INTO test(id, label) VALUES(1, :placeholder)',
+ array(':placeholder' => 'first row'));
+ prepex(11, $db, 'INSERT INTO test(id, label) VALUES(2, :placeholder)',
+ array(':placeholder' => 'second row'));
+ $stmt = prepex(12, $db, 'SELECT label FROM test ORDER BY id ASC');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+ // Is PDO fun?
+ $stmt = prepex(13, $db, 'SELECT label FROM test WHERE :placeholder > 1',
+ array(':placeholder' => 'id'));
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+ for ($num_params = 2; $num_params < 100; $num_params++) {
+ $params = array(':placeholder' => 'a');
+ for ($i = 1; $i < $num_params; $i++) {
+ $params[str_repeat('a', $i)] = 'some data';
+ }
+ prepex(16, $db, 'SELECT id, label FROM test WHERE label > :placeholder',
+ $params, array('execute' => array('sqlstate' => 'HY093')));
+ }
+
+ $stmt = prepex(16, $db, 'SELECT id, label FROM test WHERE :placeholder IS NOT NULL',
+ array(':placeholder' => 1));
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
+ printf("[017] '1' IS NOT NULL evaluates to true, expecting two rows, got %d rows\n", $tmp);
+
+ $stmt = prepex(18, $db, 'SELECT id, label FROM test WHERE :placeholder IS NULL',
+ array(':placeholder' => 1));
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 0)
+ printf("[019] '1' IS NOT NULL evaluates to true, expecting zero rows, got %d rows\n", $tmp);
+
+ prepex(20, $db, 'DROP TABLE IF EXISTS test');
+ prepex(21, $db, 'CREATE TABLE test(id INT, label CHAR(255)) ENGINE=MyISAM');
+ // Not every MySQL Server version supports this
+ if (is_object(prepex(22, $db, 'CREATE FULLTEXT INDEX idx1 ON test(label)', null, null, true))) {
+ prepex(23, $db, 'INSERT INTO test(id, label) VALUES (1, :placeholder)',
+ array(':placeholder' => 'MySQL is the best database in the world!'));
+ prepex(24, $db, 'INSERT INTO test(id, label) VALUES (2, :placeholder)',
+ array(':placeholder' => 'If I have the freedom to choose, I would always go again for the MySQL Server'));
+ $stmt = prepex(25, $db, 'SELECT id, label FROM test WHERE MATCH label AGAINST (:placeholder)',
+ array(':placeholder' => 'mysql'), null, true);
+ if (is_object($stmt)) {
+ /*
+ Lets ignore this
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
+ printf("[033] Expecting two rows, got %d rows\n", $tmp);
+ */
+ $stmt = prepex(26, $db, 'SELECT id, label FROM test ORDER BY id ASC');
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
+ printf("[027] Expecting two rows, got %d rows\n", $tmp);
+
+ if ($tmp[0]['label'] !== 'MySQL is the best database in the world!') {
+ printf("[028] INSERT seems to have failed, dumping data, check manually\n");
+ var_dump($tmp);
+ }
+ }
+ }
+
+ $db->exec('DELETE FROM test');
+ $db->exec("INSERT INTO test(id, label) VALUES (1, 'row1')");
+ $db->exec("INSERT INTO test(id, label) VALUES (2, 'row2')");
+
+ $sql = sprintf("SELECT id, label FROM test WHERE (label LIKE %s) AND (id = :placeholder)",
+ $db->quote('%ro%'));
+ $stmt = prepex(29, $db, $sql, array('placeholder' => -1));
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 0)
+ printf("[030] Expecting zero rows, got %d rows\n", $tmp);
+
+ $sql = sprintf("SELECT id, label FROM test WHERE (id = :placeholder) OR (label LIKE %s)",
+ $db->quote('%go%'));
+ $stmt = prepex(31, $db, $sql, array('placeholder' => 1));
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 1)
+ printf("[032] Expecting one row, got %d rows\n", $tmp);
+
+ // and now, the same with anonymous placeholders...
+ prepex(33, $db, 'DROP TABLE IF EXISTS test');
+ prepex(34, $db, sprintf('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
+ prepex(35, $db, "INSERT INTO test(id, label) VALUES(1, '?')");
+ $stmt = prepex(36, $db, 'SELECT label FROM test');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+ prepex(37, $db, 'DELETE FROM test');
+ prepex(38, $db, 'INSERT INTO test(id, label) VALUES(1, ?)',
+ array('first row'));
+ prepex(39, $db, 'INSERT INTO test(id, label) VALUES(2, ?)',
+ array('second row'));
+ $stmt = prepex(40, $db, 'SELECT label FROM test');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+ // Is PDO fun?
+ prepex(40, $db, 'SELECT label FROM test WHERE ? > 1',
+ array('id'));
+ prepex(41, $db, 'SELECT ? FROM test WHERE id > 1',
+ array('id'));
+ prepex(42, $db, 'SELECT ? FROM test WHERE ? > ?',
+ array('id', 'label', 'value'));
+
+ for ($num_params = 2; $num_params < 100; $num_params++) {
+ $params = array('a');
+ for ($i = 1; $i < $num_params; $i++) {
+ $params[] = 'some data';
+ }
+ prepex(43, $db, 'SELECT id, label FROM test WHERE label > ?',
+ $params, array('execute' => array('sqlstate' => 'HY093')));
+ }
+
+ prepex(44, $db, 'DELETE FROM test');
+ prepex(45, $db, 'INSERT INTO test(id, label) VALUES (1, ?), (2, ?)',
+ array('row', 'row'));
+ $stmt = prepex(46, $db, 'SELECT id, label FROM test ORDER BY id');
+ $tmp = $stmt->fetchAll(PDO::FETCH_ASSOC);
+ $exp = array(
+ 0 => array(
+ "id" => "1",
+ "label" => "row"
+ ),
+ 1 => array(
+ "id" => "2",
+ "label" => "row"
+ ),
+ );
+
+ if (MySQLPDOTest::isPDOMySQLnd()) {
+ // mysqlnd returns native types
+ $exp[0]['id'] = 1;
+ $exp[1]['id'] = 2;
+ }
+ if ($tmp !== $exp) {
+ printf("[064] Results seem wrong. Please check dumps manually.\n");
+ var_dump($exp);
+ var_dump($tmp);
+ }
+
+ $stmt = prepex(47, $db, 'SELECT id, label FROM test WHERE ? IS NOT NULL',
+ array(1));
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
+ printf("[048] '1' IS NOT NULL evaluates to true, expecting two rows, got %d rows\n", $tmp);
+
+ $stmt = prepex(49, $db, 'SELECT id, label FROM test WHERE ? IS NULL',
+ array(1));
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 0)
+ printf("[050] '1' IS NOT NULL evaluates to true, expecting zero rows, got %d rows\n", $tmp);
+
+ prepex(51, $db, 'DROP TABLE IF EXISTS test');
+ prepex(52, $db, 'CREATE TABLE test(id INT, label CHAR(255)) ENGINE=MyISAM');
+ if (is_object(prepex(53, $db, 'CREATE FULLTEXT INDEX idx1 ON test(label)', null, null, true))) {
+ prepex(54, $db, 'INSERT INTO test(id, label) VALUES (1, ?)',
+ array('MySQL is the best database in the world!'));
+ prepex(55, $db, 'INSERT INTO test(id, label) VALUES (1, ?)',
+ array('If I have the freedom to choose, I would always go again for the MySQL Server'));
+ $stmt = prepex(56, $db, 'SELECT id, label FROM test WHERE MATCH label AGAINST (?)',
+ array('mysql'), null, true);
+ /*
+ Lets ignore that
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
+ printf("[074] Expecting two rows, got %d rows\n", $tmp);
+ */
+ }
+
+ prepex(57, $db, 'DELETE FROM test');
+ prepex(58, $db, 'INSERT INTO test(id, label) VALUES (1, ?), (2, ?)',
+ array('row1', 'row2'));
+
+ /*
+ TODO enable after fix
+ $stmt = prepex(37, $db, 'SELECT id, label FROM \'test WHERE MATCH label AGAINST (:placeholder)',
+ array(':placeholder' => 'row'),
+ array('execute' => array('sqlstate' => '42000', 'mysql' => 1064)));
+ */
+
+ $stmt = prepex(59, $db, 'SELECT id, label AS "label" FROM test WHERE label = ?',
+ array('row1'));
+ $tmp = $stmt->fetchAll(PDO::FETCH_ASSOC);
+ $exp = array(
+ 0 => array("id" => "1", "label" => "row1")
+ );
+
+ if (MySQLPDOTest::isPDOMySQLnd()) {
+ // mysqlnd returns native types
+ $exp[0]['id'] = 1;
+ }
+ if ($tmp !== $exp) {
+ printf("[065] Results seem wrong. Please check dumps manually.\n");
+ var_dump($exp);
+ var_dump($tmp);
+ }
+
+ $sql = sprintf("SELECT id, label FROM test WHERE (label LIKE %s) AND (id = ?)",
+ $db->quote('%ro%'));
+ $stmt = prepex(60, $db, $sql, array(-1));
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 0)
+ printf("[061] Expecting zero rows, got %d rows\n", $tmp);
+
+ $sql = sprintf("SELECT id, label FROM test WHERE (id = ?) OR (label LIKE %s)",
+ $db->quote('%ro%'));
+ $stmt = prepex(61, $db, $sql, array(1));
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 2)
+ printf("[062] Expecting two rows, got %d rows\n", $tmp);
+
+ $sql = "SELECT id, label FROM test WHERE id = ? AND label = (SELECT label AS 'SELECT' FROM test WHERE id = ?)";
+ $stmt = prepex(63, $db, $sql, array(1, 1));
+ if (count(($tmp = $stmt->fetchAll(PDO::FETCH_ASSOC))) != 1)
+ printf("[064] Expecting one row, got %d rows\n", $tmp);
+
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
+
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_prepare_native_clear_error.phpt b/ext/pdo_mysql/tests/pdo_mysql_prepare_native_clear_error.phpt
index 48bd33fda5..88f9f5dcf1 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_prepare_native_clear_error.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_prepare_native_clear_error.phpt
@@ -9,64 +9,64 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- try {
+ try {
- $db->exec('DROP TABLE IF EXISTS test');
- $db->exec(sprintf('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
+ $db->exec('DROP TABLE IF EXISTS test');
+ $db->exec(sprintf('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
- // We need to run the emulated version first. Native version will cause a fatal error
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
- if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to turn on emulated prepared statements\n");
+ // We need to run the emulated version first. Native version will cause a fatal error
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
+ if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to turn on emulated prepared statements\n");
- // INSERT a single row
- $db->exec("INSERT INTO test(id, label) VALUES (1, 'row1')");
+ // INSERT a single row
+ $db->exec("INSERT INTO test(id, label) VALUES (1, 'row1')");
- $stmt = $db->prepare('SELECT unknown_column FROM test WHERE id > :placeholder ORDER BY id ASC');
- $stmt->execute(array(':placeholder' => 0));
- if ('00000' !== $stmt->errorCode())
- printf("[003] Execute has failed, %s %s\n",
- var_export($stmt->errorCode(), true),
- var_export($stmt->errorInfo(), true));
+ $stmt = $db->prepare('SELECT unknown_column FROM test WHERE id > :placeholder ORDER BY id ASC');
+ $stmt->execute(array(':placeholder' => 0));
+ if ('00000' !== $stmt->errorCode())
+ printf("[003] Execute has failed, %s %s\n",
+ var_export($stmt->errorCode(), true),
+ var_export($stmt->errorInfo(), true));
- $stmt = $db->prepare('SELECT id, label FROM test WHERE id > :placeholder ORDER BY id ASC');
- $stmt->execute(array(':placeholder' => 0));
- if ('00000' !== $stmt->errorCode())
- printf("[004] Execute has failed, %s %s\n",
- var_export($stmt->errorCode(), true),
- var_export($stmt->errorInfo(), true));
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt = $db->prepare('SELECT id, label FROM test WHERE id > :placeholder ORDER BY id ASC');
+ $stmt->execute(array(':placeholder' => 0));
+ if ('00000' !== $stmt->errorCode())
+ printf("[004] Execute has failed, %s %s\n",
+ var_export($stmt->errorCode(), true),
+ var_export($stmt->errorInfo(), true));
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- // Native PS
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[005] Unable to turn off emulated prepared statements\n");
+ // Native PS
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[005] Unable to turn off emulated prepared statements\n");
- $stmt = $db->prepare('SELECT unknown_column FROM test WHERE id > :placeholder ORDER BY id ASC');
- $stmt->execute(array(':placeholder' => 0));
- if ('00000' !== $stmt->errorCode())
- printf("[006] Execute has failed, %s %s\n",
- var_export($stmt->errorCode(), true),
- var_export($stmt->errorInfo(), true));
+ $stmt = $db->prepare('SELECT unknown_column FROM test WHERE id > :placeholder ORDER BY id ASC');
+ $stmt->execute(array(':placeholder' => 0));
+ if ('00000' !== $stmt->errorCode())
+ printf("[006] Execute has failed, %s %s\n",
+ var_export($stmt->errorCode(), true),
+ var_export($stmt->errorInfo(), true));
- $stmt = $db->prepare('SELECT id, label FROM test WHERE id > :placeholder ORDER BY id ASC');
- $stmt->execute(array(':placeholder' => 0));
- if ('00000' !== $stmt->errorCode())
- printf("[007] Execute has failed, %s %s\n",
- var_export($stmt->errorCode(), true),
- var_export($stmt->errorInfo(), true));
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt = $db->prepare('SELECT id, label FROM test WHERE id > :placeholder ORDER BY id ASC');
+ $stmt->execute(array(':placeholder' => 0));
+ if ('00000' !== $stmt->errorCode())
+ printf("[007] Execute has failed, %s %s\n",
+ var_export($stmt->errorCode(), true),
+ var_export($stmt->errorInfo(), true));
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_prepare_native_column.phpt b/ext/pdo_mysql/tests/pdo_mysql_prepare_native_column.phpt
index 1ee1c3a43b..4c9dcb0e7e 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_prepare_native_column.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_prepare_native_column.phpt
@@ -9,24 +9,24 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db);
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db);
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to turn off emulated prepared statements\n");
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to turn off emulated prepared statements\n");
- $stmt = $db->prepare("SELECT :param FROM test ORDER BY id ASC LIMIT 1");
- $stmt->execute(array(':param' => 'id'));
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt = $db->prepare("SELECT :param FROM test ORDER BY id ASC LIMIT 1");
+ $stmt->execute(array(':param' => 'id'));
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- $db->prepare('SELECT :placeholder FROM test WHERE :placeholder > :placeholder');
- $stmt->execute(array(':placeholder' => 'test'));
+ $db->prepare('SELECT :placeholder FROM test WHERE :placeholder > :placeholder');
+ $stmt->execute(array(':placeholder' => 'test'));
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_prepare_native_dup_named_placeholder.phpt b/ext/pdo_mysql/tests/pdo_mysql_prepare_native_dup_named_placeholder.phpt
index c9465b62a2..1c5ddc407f 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_prepare_native_dup_named_placeholder.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_prepare_native_dup_named_placeholder.phpt
@@ -9,90 +9,90 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
-
- try {
-
- $db->exec('DROP TABLE IF EXISTS test');
- $db->exec(sprintf('CREATE TABLE test(id INT, label1 CHAR(255), label2 CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
-
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to turn off emulated prepared statements\n");
- printf("Native...\n");
-
- // INSERT a single row
- $stmt = $db->prepare('INSERT INTO test(id, label1, label2) VALUES (1, :placeholder, :placeholder)');
-
- $stmt->execute(array(':placeholder' => 'row1'));
- if ('00000' !== $stmt->errorCode())
- printf("[003] Execute has failed, %s %s\n",
- var_export($stmt->errorCode(), true),
- var_export($stmt->errorInfo(), true));
-
- // Ok, what has happened: anything inserted into the DB?
- $stmt = $db->prepare('SELECT id, label1, label2 FROM test WHERE id = 1');
- $stmt->execute();
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
- // Now the same with emulated PS.
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
- if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[004] Unable to turn on emulated prepared statements\n");
- printf("Emulated...\n");
-
- $stmt = $db->prepare('INSERT INTO test(id, label1, label2) VALUES(2, :placeholder, :placeholder)');
- // No replacement shall be made
- $stmt->execute(array(':placeholder' => 'row2'));
- if ('00000' !== $stmt->errorCode())
- printf("[005] Execute has failed, %s %s\n",
- var_export($stmt->errorCode(), true),
- var_export($stmt->errorInfo(), true));
-
- // Now, what do we have in the DB?
- $stmt = $db->prepare('SELECT id, label1, label2 FROM test WHERE id = 2');
- $stmt->execute();
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
- //
- // Another variation of the theme
- //
-
- $db->exec('DELETE FROM test');
- $db->exec("INSERT INTO test (id, label1, label2) VALUES (1, 'row1', 'row2')");
- $sql = "SELECT id, label1 FROM test WHERE id = :placeholder AND label1 = (SELECT label1 AS 'SELECT' FROM test WHERE id = :placeholder)";
-
- // emulated...
- $stmt = $db->prepare($sql);
- $stmt->execute(array(':placeholder' => 1));
- if ('00000' !== $stmt->errorCode())
- printf("[006] Execute has failed, %s %s\n",
- var_export($stmt->errorCode(), true),
- var_export($stmt->errorInfo(), true));
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
- // native...
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[007] Unable to turn off emulated prepared statements\n");
- printf("Native...\n");
-
- $stmt = $db->prepare($sql);
- $stmt->execute(array(':placeholder' => 1));
- if ('00000' !== $stmt->errorCode())
- printf("[008] Execute has failed, %s %s\n",
- var_export($stmt->errorCode(), true),
- var_export($stmt->errorInfo(), true));
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
-
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
-
- print "done!";
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+
+ try {
+
+ $db->exec('DROP TABLE IF EXISTS test');
+ $db->exec(sprintf('CREATE TABLE test(id INT, label1 CHAR(255), label2 CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
+
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to turn off emulated prepared statements\n");
+ printf("Native...\n");
+
+ // INSERT a single row
+ $stmt = $db->prepare('INSERT INTO test(id, label1, label2) VALUES (1, :placeholder, :placeholder)');
+
+ $stmt->execute(array(':placeholder' => 'row1'));
+ if ('00000' !== $stmt->errorCode())
+ printf("[003] Execute has failed, %s %s\n",
+ var_export($stmt->errorCode(), true),
+ var_export($stmt->errorInfo(), true));
+
+ // Ok, what has happened: anything inserted into the DB?
+ $stmt = $db->prepare('SELECT id, label1, label2 FROM test WHERE id = 1');
+ $stmt->execute();
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+ // Now the same with emulated PS.
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
+ if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[004] Unable to turn on emulated prepared statements\n");
+ printf("Emulated...\n");
+
+ $stmt = $db->prepare('INSERT INTO test(id, label1, label2) VALUES(2, :placeholder, :placeholder)');
+ // No replacement shall be made
+ $stmt->execute(array(':placeholder' => 'row2'));
+ if ('00000' !== $stmt->errorCode())
+ printf("[005] Execute has failed, %s %s\n",
+ var_export($stmt->errorCode(), true),
+ var_export($stmt->errorInfo(), true));
+
+ // Now, what do we have in the DB?
+ $stmt = $db->prepare('SELECT id, label1, label2 FROM test WHERE id = 2');
+ $stmt->execute();
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+ //
+ // Another variation of the theme
+ //
+
+ $db->exec('DELETE FROM test');
+ $db->exec("INSERT INTO test (id, label1, label2) VALUES (1, 'row1', 'row2')");
+ $sql = "SELECT id, label1 FROM test WHERE id = :placeholder AND label1 = (SELECT label1 AS 'SELECT' FROM test WHERE id = :placeholder)";
+
+ // emulated...
+ $stmt = $db->prepare($sql);
+ $stmt->execute(array(':placeholder' => 1));
+ if ('00000' !== $stmt->errorCode())
+ printf("[006] Execute has failed, %s %s\n",
+ var_export($stmt->errorCode(), true),
+ var_export($stmt->errorInfo(), true));
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+ // native...
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[007] Unable to turn off emulated prepared statements\n");
+ printf("Native...\n");
+
+ $stmt = $db->prepare($sql);
+ $stmt->execute(array(':placeholder' => 1));
+ if ('00000' !== $stmt->errorCode())
+ printf("[008] Execute has failed, %s %s\n",
+ var_export($stmt->errorCode(), true),
+ var_export($stmt->errorInfo(), true));
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
+
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_prepare_native_mixed_style.phpt b/ext/pdo_mysql/tests/pdo_mysql_prepare_native_mixed_style.phpt
index e706b92616..d24cb894ac 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_prepare_native_mixed_style.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_prepare_native_mixed_style.phpt
@@ -9,22 +9,22 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db);
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db);
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to turn off emulated prepared statements\n");
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to turn off emulated prepared statements\n");
- $stmt = $db->query('DELETE FROM test');
- $stmt = $db->prepare('INSERT INTO test(id, label) VALUES (1, ?), (2, ?)');
- $stmt->execute(array('a', 'b'));
- $stmt = $db->prepare("SELECT id, label FROM test WHERE id = :placeholder AND label = (SELECT label AS 'SELECT' FROM test WHERE id = ?)");
- $stmt->execute(array(1, 1));
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt = $db->query('DELETE FROM test');
+ $stmt = $db->prepare('INSERT INTO test(id, label) VALUES (1, ?), (2, ?)');
+ $stmt->execute(array('a', 'b'));
+ $stmt = $db->prepare("SELECT id, label FROM test WHERE id = :placeholder AND label = (SELECT label AS 'SELECT' FROM test WHERE id = ?)");
+ $stmt->execute(array(1, 1));
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_prepare_native_named_placeholder.phpt b/ext/pdo_mysql/tests/pdo_mysql_prepare_native_named_placeholder.phpt
index 12acdcc0b1..6b553375d6 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_prepare_native_named_placeholder.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_prepare_native_named_placeholder.phpt
@@ -9,62 +9,62 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- try {
+ try {
- $db->exec('DROP TABLE IF EXISTS test');
- $db->exec(sprintf('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
+ $db->exec('DROP TABLE IF EXISTS test');
+ $db->exec(sprintf('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to turn off emulated prepared statements\n");
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to turn off emulated prepared statements\n");
- // INSERT a single row
- $stmt = $db->prepare("INSERT INTO test(id, label) VALUES (100, ':placeholder')");
+ // INSERT a single row
+ $stmt = $db->prepare("INSERT INTO test(id, label) VALUES (100, ':placeholder')");
- // Yes, there is no placeholder to bind to and named placeholder
- // do not work with MySQL native PS, but lets see what happens!
- // The ':placeholder' is a string constant in the INSERT statement.
- // I would expect to get an error message, but this is not what happens.
- $stmt->execute(array(':placeholder' => 'row1'));
- if ('00000' !== $stmt->errorCode())
- printf("[003] Execute has failed, %s %s\n",
- var_export($stmt->errorCode(), true),
- var_export($stmt->errorInfo(), true));
+ // Yes, there is no placeholder to bind to and named placeholder
+ // do not work with MySQL native PS, but lets see what happens!
+ // The ':placeholder' is a string constant in the INSERT statement.
+ // I would expect to get an error message, but this is not what happens.
+ $stmt->execute(array(':placeholder' => 'row1'));
+ if ('00000' !== $stmt->errorCode())
+ printf("[003] Execute has failed, %s %s\n",
+ var_export($stmt->errorCode(), true),
+ var_export($stmt->errorInfo(), true));
- // Ok, what has happened: anything inserted into the DB?
- $stmt = $db->prepare('SELECT id, label FROM test');
- $stmt->execute();
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ // Ok, what has happened: anything inserted into the DB?
+ $stmt = $db->prepare('SELECT id, label FROM test');
+ $stmt->execute();
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- // Now the same with emulated PS.
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
- if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[004] Unable to turn on emulated prepared statements\n");
+ // Now the same with emulated PS.
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
+ if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[004] Unable to turn on emulated prepared statements\n");
- // Note that the "named placeholder" is enclosed by double quotes.
- $stmt = $db->prepare("INSERT INTO test(id, label) VALUES(101, ':placeholder')");
- // No replacement shall be made
- $stmt->execute(array(':placeholder' => 'row1'));
- // Again, I'd like to see an error message
- if ('00000' !== $stmt->errorCode())
- printf("[005] Execute has failed, %s %s\n",
- var_export($stmt->errorCode(), true),
- var_export($stmt->errorInfo(), true));
+ // Note that the "named placeholder" is enclosed by double quotes.
+ $stmt = $db->prepare("INSERT INTO test(id, label) VALUES(101, ':placeholder')");
+ // No replacement shall be made
+ $stmt->execute(array(':placeholder' => 'row1'));
+ // Again, I'd like to see an error message
+ if ('00000' !== $stmt->errorCode())
+ printf("[005] Execute has failed, %s %s\n",
+ var_export($stmt->errorCode(), true),
+ var_export($stmt->errorInfo(), true));
- // Now, what do we have in the DB?
- $stmt = $db->prepare('SELECT id, label FROM test ORDER BY id');
- $stmt->execute();
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ // Now, what do we have in the DB?
+ $stmt = $db->prepare('SELECT id, label FROM test ORDER BY id');
+ $stmt->execute();
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_prepare_native_placeholder_everywhere.phpt b/ext/pdo_mysql/tests/pdo_mysql_prepare_native_placeholder_everywhere.phpt
index 8df6961f93..a7a76a462b 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_prepare_native_placeholder_everywhere.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_prepare_native_placeholder_everywhere.phpt
@@ -9,55 +9,55 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- try {
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
- if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to switch on emulated prepared statements, test will fail\n");
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ try {
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
+ if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to switch on emulated prepared statements, test will fail\n");
- $db->exec('DROP TABLE IF EXISTS test');
- $db->exec(sprintf('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
- $db->exec("INSERT INTO test(id, label) VALUES (1, 'row1')");
+ $db->exec('DROP TABLE IF EXISTS test');
+ $db->exec(sprintf('CREATE TABLE test(id INT, label CHAR(255)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE));
+ $db->exec("INSERT INTO test(id, label) VALUES (1, 'row1')");
- $stmt = $db->prepare('SELECT ?, id, label FROM test WHERE ? = ? ORDER BY id ASC');
- $stmt->execute(array('id', 'label', 'label'));
- if ('00000' !== $stmt->errorCode())
- printf("[003] Execute has failed, %s %s\n",
- var_export($stmt->errorCode(), true),
- var_export($stmt->errorInfo(), true));
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt = $db->prepare('SELECT ?, id, label FROM test WHERE ? = ? ORDER BY id ASC');
+ $stmt->execute(array('id', 'label', 'label'));
+ if ('00000' !== $stmt->errorCode())
+ printf("[003] Execute has failed, %s %s\n",
+ var_export($stmt->errorCode(), true),
+ var_export($stmt->errorInfo(), true));
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- // now the same with native PS
- printf("now the same with native PS\n");
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[004] Unable to switch off emulated prepared statements, test will fail\n");
+ // now the same with native PS
+ printf("now the same with native PS\n");
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[004] Unable to switch off emulated prepared statements, test will fail\n");
- $stmt = $db->prepare('SELECT ?, id, label FROM test WHERE ? = ? ORDER BY id ASC');
- $stmt->execute(array('id', 'label', 'label'));
- if ('00000' !== $stmt->errorCode())
- printf("[005] Execute has failed, %s %s\n",
- var_export($stmt->errorCode(), true),
- var_export($stmt->errorInfo(), true));
+ $stmt = $db->prepare('SELECT ?, id, label FROM test WHERE ? = ? ORDER BY id ASC');
+ $stmt->execute(array('id', 'label', 'label'));
+ if ('00000' !== $stmt->errorCode())
+ printf("[005] Execute has failed, %s %s\n",
+ var_export($stmt->errorCode(), true),
+ var_export($stmt->errorInfo(), true));
- $tmp = $stmt->fetchAll(PDO::FETCH_ASSOC);
- if (!MySQLPDOTest::isPDOMySQLnd()) {
- if (isset($tmp[0]['id'])) {
- // libmysql should return a string here whereas mysqlnd returns a native int
- if (gettype($tmp[0]['id']) == 'string')
- // convert to int for the test output...
- settype($tmp[0]['id'], 'integer');
- }
- }
- var_dump($tmp);
+ $tmp = $stmt->fetchAll(PDO::FETCH_ASSOC);
+ if (!MySQLPDOTest::isPDOMySQLnd()) {
+ if (isset($tmp[0]['id'])) {
+ // libmysql should return a string here whereas mysqlnd returns a native int
+ if (gettype($tmp[0]['id']) == 'string')
+ // convert to int for the test output...
+ settype($tmp[0]['id'], 'integer');
+ }
+ }
+ var_dump($tmp);
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_rollback.phpt b/ext/pdo_mysql/tests/pdo_mysql_rollback.phpt
index 30f1d56f88..96e77a1326 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_rollback.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_rollback.phpt
@@ -11,75 +11,75 @@ if (false == MySQLPDOTest::detect_transactional_mysql_engine($db))
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
- $db->beginTransaction();
+ $db->beginTransaction();
- $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
- $num = $row['_num'];
+ $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
+ $num = $row['_num'];
- $db->query("INSERT INTO test(id, label) VALUES (100, 'z')");
- $num++;
- $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
- if ($row['_num'] != $num)
- printf("[001] INSERT has failed, test will fail\n");
+ $db->query("INSERT INTO test(id, label) VALUES (100, 'z')");
+ $num++;
+ $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
+ if ($row['_num'] != $num)
+ printf("[001] INSERT has failed, test will fail\n");
- $db->rollBack();
- $num--;
- $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
- if ($row['_num'] != $num)
- printf("[002] ROLLBACK has failed\n");
+ $db->rollBack();
+ $num--;
+ $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
+ if ($row['_num'] != $num)
+ printf("[002] ROLLBACK has failed\n");
- $db->beginTransaction();
- $db->query("INSERT INTO test(id, label) VALUES (100, 'z')");
- $db->query('DROP TABLE IF EXISTS test2');
- $db->query('CREATE TABLE test2(id INT)');
- $num++;
- $db->rollBack();
- $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
- if ($row['_num'] != $num)
- printf("[002] ROLLBACK should have no effect because of the implicit COMMIT
- triggered by DROP/CREATE TABLE\n");
+ $db->beginTransaction();
+ $db->query("INSERT INTO test(id, label) VALUES (100, 'z')");
+ $db->query('DROP TABLE IF EXISTS test2');
+ $db->query('CREATE TABLE test2(id INT)');
+ $num++;
+ $db->rollBack();
+ $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
+ if ($row['_num'] != $num)
+ printf("[002] ROLLBACK should have no effect because of the implicit COMMIT
+ triggered by DROP/CREATE TABLE\n");
- $db->query('DROP TABLE IF EXISTS test2');
- $db->query('CREATE TABLE test2(id INT) ENGINE=MyISAM');
- $db->beginTransaction();
- $db->query('INSERT INTO test2(id) VALUES (1)');
- $db->rollBack();
- $row = $db->query('SELECT COUNT(*) AS _num FROM test2')->fetch(PDO::FETCH_ASSOC);
- if ($row['_num'] != 1)
- printf("[003] ROLLBACK should have no effect\n");
+ $db->query('DROP TABLE IF EXISTS test2');
+ $db->query('CREATE TABLE test2(id INT) ENGINE=MyISAM');
+ $db->beginTransaction();
+ $db->query('INSERT INTO test2(id) VALUES (1)');
+ $db->rollBack();
+ $row = $db->query('SELECT COUNT(*) AS _num FROM test2')->fetch(PDO::FETCH_ASSOC);
+ if ($row['_num'] != 1)
+ printf("[003] ROLLBACK should have no effect\n");
- $db->query('DROP TABLE IF EXISTS test2');
+ $db->query('DROP TABLE IF EXISTS test2');
- $db->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);
- $db->beginTransaction();
- $db->query('DELETE FROM test');
- $db->rollBack();
- var_dump($db->getAttribute(PDO::ATTR_AUTOCOMMIT));
+ $db->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);
+ $db->beginTransaction();
+ $db->query('DELETE FROM test');
+ $db->rollBack();
+ var_dump($db->getAttribute(PDO::ATTR_AUTOCOMMIT));
- $db->setAttribute(PDO::ATTR_AUTOCOMMIT, 0);
- $db->beginTransaction();
- $db->query('DELETE FROM test');
- $db->rollBack();
- var_dump($db->getAttribute(PDO::ATTR_AUTOCOMMIT));
+ $db->setAttribute(PDO::ATTR_AUTOCOMMIT, 0);
+ $db->beginTransaction();
+ $db->query('DELETE FROM test');
+ $db->rollBack();
+ var_dump($db->getAttribute(PDO::ATTR_AUTOCOMMIT));
- $db->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);
- $db->beginTransaction();
- $db->query('DELETE FROM test');
- $db->commit();
- var_dump($db->getAttribute(PDO::ATTR_AUTOCOMMIT));
+ $db->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);
+ $db->beginTransaction();
+ $db->query('DELETE FROM test');
+ $db->commit();
+ var_dump($db->getAttribute(PDO::ATTR_AUTOCOMMIT));
- $db->setAttribute(PDO::ATTR_AUTOCOMMIT, 0);
- $db->beginTransaction();
- $db->query('DELETE FROM test');
- $db->commit();
- var_dump($db->getAttribute(PDO::ATTR_AUTOCOMMIT));
+ $db->setAttribute(PDO::ATTR_AUTOCOMMIT, 0);
+ $db->beginTransaction();
+ $db->query('DELETE FROM test');
+ $db->commit();
+ var_dump($db->getAttribute(PDO::ATTR_AUTOCOMMIT));
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_bindcolumn.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_bindcolumn.phpt
index bf56cbc835..6d1ac4bbfb 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_bindcolumn.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_bindcolumn.phpt
@@ -9,97 +9,97 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db);
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db);
- try {
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
- if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to turn on emulated prepared statements\n");
+ try {
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
+ if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to turn on emulated prepared statements\n");
- $stmt = $db->prepare('SELECT id, label FROM test ORDER BY id ASC LIMIT 2');
- $stmt->execute();
- $id = $label = null;
+ $stmt = $db->prepare('SELECT id, label FROM test ORDER BY id ASC LIMIT 2');
+ $stmt->execute();
+ $id = $label = null;
- if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
- printf("[003] Cannot bind integer column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+ if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
+ printf("[003] Cannot bind integer column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
- if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
- printf("[004] Cannot bind string column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+ if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
+ printf("[004] Cannot bind string column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
- $data = array();
- while ($stmt->fetch(PDO::FETCH_BOUND)) {
- printf("id = %s (%s) / label = %s (%s)\n",
- var_export($id, true), gettype($id),
- var_export($label, true), gettype($label));
- $data[] = array('id' => $id, 'label' => $label);
- }
+ $data = array();
+ while ($stmt->fetch(PDO::FETCH_BOUND)) {
+ printf("id = %s (%s) / label = %s (%s)\n",
+ var_export($id, true), gettype($id),
+ var_export($label, true), gettype($label));
+ $data[] = array('id' => $id, 'label' => $label);
+ }
- $stmt = $db->query('SELECT id, label FROM test ORDER BY id ASC LIMIT 2');
- $index = 0;
- while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
- if ($row['id'] != $data[$index]['id']) {
- printf("[005] Fetch bound and fetch assoc differ - column 'id', bound: %s/%s, assoc: %s/%s\n",
- var_export($data[$index]['id'], true), gettype($data[$index]['id']),
- var_export($row['id'], true), gettype($row['id']));
- }
- if ($row['label'] != $data[$index]['label']) {
- printf("[006] Fetch bound and fetch assoc differ - column 'label', bound: %s/%s, assoc: %s/%s\n",
- var_export($data[$index]['label'], true), gettype($data[$index]['label']),
- var_export($row['label'], true), gettype($row['label']));
- }
- $index++;
- }
+ $stmt = $db->query('SELECT id, label FROM test ORDER BY id ASC LIMIT 2');
+ $index = 0;
+ while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
+ if ($row['id'] != $data[$index]['id']) {
+ printf("[005] Fetch bound and fetch assoc differ - column 'id', bound: %s/%s, assoc: %s/%s\n",
+ var_export($data[$index]['id'], true), gettype($data[$index]['id']),
+ var_export($row['id'], true), gettype($row['id']));
+ }
+ if ($row['label'] != $data[$index]['label']) {
+ printf("[006] Fetch bound and fetch assoc differ - column 'label', bound: %s/%s, assoc: %s/%s\n",
+ var_export($data[$index]['label'], true), gettype($data[$index]['label']),
+ var_export($row['label'], true), gettype($row['label']));
+ }
+ $index++;
+ }
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[007] Unable to turn off emulated prepared statements\n");
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[007] Unable to turn off emulated prepared statements\n");
- $stmt = $db->prepare('SELECT id, label FROM test ORDER BY id ASC LIMIT 2, 2');
- $stmt->execute();
- $id = $label = null;
+ $stmt = $db->prepare('SELECT id, label FROM test ORDER BY id ASC LIMIT 2, 2');
+ $stmt->execute();
+ $id = $label = null;
- if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
- printf("[008] Cannot bind integer column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+ if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
+ printf("[008] Cannot bind integer column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
- if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
- printf("[009] Cannot bind string column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+ if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
+ printf("[009] Cannot bind string column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
- $data = array();
- while ($stmt->fetch(PDO::FETCH_BOUND)) {
- printf("id = %s (%s) / label = %s (%s)\n",
- var_export($id, true), gettype($id),
- var_export($label, true), gettype($label));
- $data[] = array('id' => $id, 'label' => $label);
- }
+ $data = array();
+ while ($stmt->fetch(PDO::FETCH_BOUND)) {
+ printf("id = %s (%s) / label = %s (%s)\n",
+ var_export($id, true), gettype($id),
+ var_export($label, true), gettype($label));
+ $data[] = array('id' => $id, 'label' => $label);
+ }
- $stmt = $db->query('SELECT id, label FROM test ORDER BY id ASC LIMIT 2, 2');
- $index = 0;
- while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
- if ($row['id'] != $data[$index]['id']) {
- printf("[010] Fetch bound and fetch assoc differ - column 'id', bound: %s/%s, assoc: %s/%s\n",
- var_export($data[$index]['id'], true), gettype($data[$index]['id']),
- var_export($row['id'], true), gettype($row['id']));
- }
- if ($row['label'] != $data[$index]['label']) {
- printf("[011] Fetch bound and fetch assoc differ - column 'label', bound: %s/%s, assoc: %s/%s\n",
- var_export($data[$index]['label'], true), gettype($data[$index]['label']),
- var_export($row['label'], true), gettype($row['label']));
- }
- $index++;
- }
+ $stmt = $db->query('SELECT id, label FROM test ORDER BY id ASC LIMIT 2, 2');
+ $index = 0;
+ while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
+ if ($row['id'] != $data[$index]['id']) {
+ printf("[010] Fetch bound and fetch assoc differ - column 'id', bound: %s/%s, assoc: %s/%s\n",
+ var_export($data[$index]['id'], true), gettype($data[$index]['id']),
+ var_export($row['id'], true), gettype($row['id']));
+ }
+ if ($row['label'] != $data[$index]['label']) {
+ printf("[011] Fetch bound and fetch assoc differ - column 'label', bound: %s/%s, assoc: %s/%s\n",
+ var_export($data[$index]['label'], true), gettype($data[$index]['label']),
+ var_export($row['label'], true), gettype($row['label']));
+ }
+ $index++;
+ }
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_bindparam.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_bindparam.phpt
index 422c519355..4559c499ea 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_bindparam.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_bindparam.phpt
@@ -8,113 +8,113 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
-
- MySQLPDOTest::createTestTable($db);
-
- function pdo_mysql_stmt_bindparam($db, $offset) {
-
- $stmt = $db->prepare('SELECT id, label FROM test WHERE id > ? ORDER BY id ASC LIMIT 2');
- $in = 0;
- if (!$stmt->bindParam(1, $in))
- printf("[%03d + 1] Cannot bind parameter, %s %s\n", $offset,
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- $stmt->execute();
- $id = $label = null;
-
- if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
- printf("[%03d + 2] Cannot bind integer column, %s %s\n", $offset,
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
- printf("[%03d + 3] Cannot bind string column, %s %s\n", $offset,
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- while ($stmt->fetch(PDO::FETCH_BOUND))
- printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
- $in,
- var_export($id, true), gettype($id),
- var_export($label, true), gettype($label));
-
- printf("Same again...\n");
- $stmt->execute();
- while ($stmt->fetch(PDO::FETCH_BOUND))
- printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
- $in,
- var_export($id, true), gettype($id),
- var_export($label, true), gettype($label));
-
- // NULL values
- printf("NULL...\n");
- $stmt = $db->prepare('INSERT INTO test(id, label) VALUES (100, ?)');
- $label = null;
- if (!$stmt->bindParam(1, $label))
- printf("[%03d + 4] Cannot bind parameter, %s %s\n", $offset,
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- if (!$stmt->execute())
- printf("[%03d + 5] Cannot execute statement, %s %s\n", $offset,
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- /* NOTE: you cannot use PDO::query() with unbuffered, native PS - see extra test */
- $stmt = $db->prepare('SELECT id, NULL AS _label FROM test WHERE label IS NULL');
- $stmt->execute();
-
- $id = $label = 'bogus';
- if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
- printf("[%03d + 6] Cannot bind NULL column, %s %s\n", $offset,
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
- printf("[%03d + 3] Cannot bind string column, %s %s\n", $offset,
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- while ($stmt->fetch(PDO::FETCH_BOUND))
- printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
- $in,
- var_export($id, true), gettype($id),
- var_export($label, true), gettype($label));
- }
-
- try {
- printf("Emulated PS...\n");
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
- if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to turn on emulated prepared statements\n");
-
- printf("Buffered...\n");
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
- pdo_mysql_stmt_bindparam($db, 3);
-
- printf("Unbuffered...\n");
- MySQLPDOTest::createTestTable($db);
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
- pdo_mysql_stmt_bindparam($db, 4);
-
- printf("Native PS...\n");
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[004] Unable to turn off emulated prepared statements\n");
-
- printf("Buffered...\n");
- MySQLPDOTest::createTestTable($db);
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
- pdo_mysql_stmt_bindparam($db, 5);
-
- printf("Unbuffered...\n");
- MySQLPDOTest::createTestTable($db);
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
- pdo_mysql_stmt_bindparam($db, 6);
-
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
-
- print "done!";
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
+
+ MySQLPDOTest::createTestTable($db);
+
+ function pdo_mysql_stmt_bindparam($db, $offset) {
+
+ $stmt = $db->prepare('SELECT id, label FROM test WHERE id > ? ORDER BY id ASC LIMIT 2');
+ $in = 0;
+ if (!$stmt->bindParam(1, $in))
+ printf("[%03d + 1] Cannot bind parameter, %s %s\n", $offset,
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ $stmt->execute();
+ $id = $label = null;
+
+ if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
+ printf("[%03d + 2] Cannot bind integer column, %s %s\n", $offset,
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
+ printf("[%03d + 3] Cannot bind string column, %s %s\n", $offset,
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ while ($stmt->fetch(PDO::FETCH_BOUND))
+ printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
+ $in,
+ var_export($id, true), gettype($id),
+ var_export($label, true), gettype($label));
+
+ printf("Same again...\n");
+ $stmt->execute();
+ while ($stmt->fetch(PDO::FETCH_BOUND))
+ printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
+ $in,
+ var_export($id, true), gettype($id),
+ var_export($label, true), gettype($label));
+
+ // NULL values
+ printf("NULL...\n");
+ $stmt = $db->prepare('INSERT INTO test(id, label) VALUES (100, ?)');
+ $label = null;
+ if (!$stmt->bindParam(1, $label))
+ printf("[%03d + 4] Cannot bind parameter, %s %s\n", $offset,
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ if (!$stmt->execute())
+ printf("[%03d + 5] Cannot execute statement, %s %s\n", $offset,
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ /* NOTE: you cannot use PDO::query() with unbuffered, native PS - see extra test */
+ $stmt = $db->prepare('SELECT id, NULL AS _label FROM test WHERE label IS NULL');
+ $stmt->execute();
+
+ $id = $label = 'bogus';
+ if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
+ printf("[%03d + 6] Cannot bind NULL column, %s %s\n", $offset,
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
+ printf("[%03d + 3] Cannot bind string column, %s %s\n", $offset,
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ while ($stmt->fetch(PDO::FETCH_BOUND))
+ printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
+ $in,
+ var_export($id, true), gettype($id),
+ var_export($label, true), gettype($label));
+ }
+
+ try {
+ printf("Emulated PS...\n");
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
+ if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to turn on emulated prepared statements\n");
+
+ printf("Buffered...\n");
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
+ pdo_mysql_stmt_bindparam($db, 3);
+
+ printf("Unbuffered...\n");
+ MySQLPDOTest::createTestTable($db);
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
+ pdo_mysql_stmt_bindparam($db, 4);
+
+ printf("Native PS...\n");
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[004] Unable to turn off emulated prepared statements\n");
+
+ printf("Buffered...\n");
+ MySQLPDOTest::createTestTable($db);
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
+ pdo_mysql_stmt_bindparam($db, 5);
+
+ printf("Unbuffered...\n");
+ MySQLPDOTest::createTestTable($db);
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
+ pdo_mysql_stmt_bindparam($db, 6);
+
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
+
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_bindparam_types.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_bindparam_types.phpt
index 0e34313a96..5da2bb30fb 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_bindparam_types.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_bindparam_types.phpt
@@ -9,160 +9,160 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db);
-
- function pdo_mysql_stmt_bindparam_types_do($db, $offset, $native, $sql_type, $value) {
-
- if ($native)
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- else
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
-
- $db->exec('DROP TABLE IF EXISTS test');
- $sql = sprintf('CREATE TABLE test(id INT, label %s) ENGINE=%s', $sql_type, MySQLPDOTest::getTableEngine());
- if ((!$stmt = @$db->prepare($sql)) || (!@$stmt->execute()))
- // Server might not support column type - skip it
- return true;
-
- $stmt = $db->prepare('INSERT INTO test(id, label) VALUES (1, ?)');
- if (!$stmt->bindParam(1, $value)) {
- printf("[%03d/%s + 1] %s\n", $offset, ($native) ? 'native' : 'emulated',
- var_export($stmt->errorInfo(), true));
- return false;
- }
- if (!$stmt->execute()) {
- printf("[%03d/%s + 2] %s\n", $offset, ($native) ? 'native' : 'emulated',
- var_export($stmt->errorInfo(), true));
- return false;
- }
-
- $stmt = $db->query('SELECT id, label FROM test');
- $id = $label = null;
- if (!$stmt->bindColumn(1, $id)) {
- printf("[%03d/%s + 3] %s\n", $offset, ($native) ? 'native' : 'emulated',
- var_export($stmt->errorInfo(), true));
- return false;
- }
- if (!$stmt->bindColumn(2, $label)) {
- printf("[%03d/%s + 4] %s\n", $offset, ($native) ? 'native' : 'emulated',
- var_export($stmt->errorInfo(), true));
- return false;
- }
-
- if (!$stmt->fetch(PDO::FETCH_BOUND)) {
- printf("[%03d/%s + 5] %s\n", $offset, ($native) ? 'native' : 'emulated',
- var_export($stmt->errorInfo(), true));
- return false;
- }
- $stmt->closeCursor();
-
- if ($label != $value) {
- printf("[%03d/%s + 6] Got %s expecting %s - please check manually\n",
- $offset, ($native) ? 'native' : 'emulated',
- var_export($label, true), var_export($value, true));
- // fall through
- }
-
- $stmt->execute();
- $row = $stmt->fetch(PDO::FETCH_ASSOC);
- if (empty($row)) {
- printf("[%03d/%s + 7] %s\n", $offset, ($native) ? 'native' : 'emulated',
- var_export($stmt->errorInfo(), true));
- return false;
- }
-
- if ($row['label'] != $value) {
- printf("[%03d/%s + 8] Got %s expecting %s - please check manually\n",
- $offset, ($native) ? 'native' : 'emulated',
- var_export($row['label'], true), var_export($value, true));
- return false;
- }
-
- if ($row['label'] != $label) {
- printf("[%03d/%s + 9] Got %s from FETCH_ASSOC and %s from FETCH_BOUND- please check manually\n",
- $offset, ($native) ? 'native' : 'emulated',
- var_export($row['label'], true), var_export($value, true));
- return false;
- }
-
- $db->exec('DROP TABLE IF EXISTS test');
- return true;
- }
-
- function pdo_mysql_stmt_bindparam_types($db, $offset, $sql_type, $value) {
-
- pdo_mysql_stmt_bindparam_types_do($db, $offset, true, $sql_type, $value);
- pdo_mysql_stmt_bindparam_types_do($db, $offset, false, $sql_type, $value);
-
- }
-
- try {
-
- // pdo_mysql_stmt_bindparam_types($db, 2, 'BIT(8)', 1);
- pdo_mysql_stmt_bindparam_types($db, 3, 'TINYINT', -127);
- pdo_mysql_stmt_bindparam_types($db, 4, 'TINYINT UNSIGNED', 255);
- pdo_mysql_stmt_bindparam_types($db, 5, 'BOOLEAN', 1);
- pdo_mysql_stmt_bindparam_types($db, 6, 'SMALLINT', -32768);
- pdo_mysql_stmt_bindparam_types($db, 7, 'SMALLINT UNSIGNED', 65535);
- pdo_mysql_stmt_bindparam_types($db, 8, 'MEDIUMINT', -8388608);
- pdo_mysql_stmt_bindparam_types($db, 9, 'MEDIUMINT UNSIGNED', 16777215);
- pdo_mysql_stmt_bindparam_types($db, 10, 'INT', -2147483648);
- pdo_mysql_stmt_bindparam_types($db, 11, 'INT UNSIGNED', 4294967295);
- pdo_mysql_stmt_bindparam_types($db, 12, 'BIGINT', -1000);
- pdo_mysql_stmt_bindparam_types($db, 13, 'BIGINT UNSIGNED', 1000);
- pdo_mysql_stmt_bindparam_types($db, 14, 'REAL', -1000);
- pdo_mysql_stmt_bindparam_types($db, 15, 'REAL UNSIGNED', 1000);
- pdo_mysql_stmt_bindparam_types($db, 16, 'REAL ZEROFILL', '0000000000000000000000');
- pdo_mysql_stmt_bindparam_types($db, 17, 'REAL UNSIGNED ZEROFILL', '0000000000000000000010');
- pdo_mysql_stmt_bindparam_types($db, 18, 'DOUBLE', -1000);
- pdo_mysql_stmt_bindparam_types($db, 19, 'DOUBLE UNSIGNED', 1000);
- pdo_mysql_stmt_bindparam_types($db, 20, 'DOUBLE ZEROFILL', '000000000000');
- pdo_mysql_stmt_bindparam_types($db, 21, 'DOUBLE ZEROFILL UNSIGNED', '000000001000');
- pdo_mysql_stmt_bindparam_types($db, 22, 'FLOAT', -1000);
- pdo_mysql_stmt_bindparam_types($db, 23, 'FLOAT UNSIGNED', 1000);
- pdo_mysql_stmt_bindparam_types($db, 24, 'FLOAT ZEROFILL', '000000000000');
- pdo_mysql_stmt_bindparam_types($db, 25, 'FLOAT ZEROFILL UNSIGNED', '000000001000');
- pdo_mysql_stmt_bindparam_types($db, 26, 'DECIMAL', -1000);
- pdo_mysql_stmt_bindparam_types($db, 27, 'DECIMAL UNSIGNED', 1000);
- pdo_mysql_stmt_bindparam_types($db, 28, 'DECIMAL ZEROFILL', '000000000000');
- pdo_mysql_stmt_bindparam_types($db, 29, 'DECIMAL ZEROFILL UNSIGNED', '000000001000');
- pdo_mysql_stmt_bindparam_types($db, 30, 'NUMERIC', -1000);
- pdo_mysql_stmt_bindparam_types($db, 31, 'NUMERIC UNSIGNED', 1000);
- pdo_mysql_stmt_bindparam_types($db, 32, 'NUMERIC ZEROFILL', '000000000000');
- pdo_mysql_stmt_bindparam_types($db, 33, 'NUMERIC ZEROFILL UNSIGNED', '000000001000');
- pdo_mysql_stmt_bindparam_types($db, 34, 'DATE', '2008-04-23');
- pdo_mysql_stmt_bindparam_types($db, 35, 'TIME', '16:43:12');
- pdo_mysql_stmt_bindparam_types($db, 36, 'TIMESTAMP', '2008-04-23 16:44:53');
- pdo_mysql_stmt_bindparam_types($db, 37, 'DATETIME', '2008-04-23 16:44:53');
- pdo_mysql_stmt_bindparam_types($db, 38, 'YEAR', '2008');
- pdo_mysql_stmt_bindparam_types($db, 39, 'CHAR(1)', 'a');
- pdo_mysql_stmt_bindparam_types($db, 40, 'CHAR(255)', 'abc');
- pdo_mysql_stmt_bindparam_types($db, 41, 'VARCHAR(255)', str_repeat('a', 255));
- pdo_mysql_stmt_bindparam_types($db, 42, 'BINARY(255)', str_repeat('a', 255));
- pdo_mysql_stmt_bindparam_types($db, 43, 'VARBINARY(255)', str_repeat('a', 255));
- pdo_mysql_stmt_bindparam_types($db, 44, 'TINYBLOB', str_repeat('a', 255));
- pdo_mysql_stmt_bindparam_types($db, 45, 'BLOB', str_repeat('b', 300));
- pdo_mysql_stmt_bindparam_types($db, 46, 'MEDIUMBLOB', str_repeat('b', 300));
- pdo_mysql_stmt_bindparam_types($db, 47, 'LONGBLOB', str_repeat('b', 300));
- pdo_mysql_stmt_bindparam_types($db, 48, 'TINYTEXT', str_repeat('c', 255));
- pdo_mysql_stmt_bindparam_types($db, 49, 'TINYTEXT BINARY', str_repeat('c', 255));
- pdo_mysql_stmt_bindparam_types($db, 50, 'TEXT', str_repeat('d', 300));
- pdo_mysql_stmt_bindparam_types($db, 51, 'TEXT BINARY', str_repeat('d', 300));
- pdo_mysql_stmt_bindparam_types($db, 52, 'MEDIUMTEXT', str_repeat('d', 300));
- pdo_mysql_stmt_bindparam_types($db, 53, 'MEDIUMTEXT BINARY', str_repeat('d', 300));
- pdo_mysql_stmt_bindparam_types($db, 54, 'LONGTEXT', str_repeat('d', 300));
- pdo_mysql_stmt_bindparam_types($db, 55, 'LONGTEXT BINARY', str_repeat('d', 300));
- pdo_mysql_stmt_bindparam_types($db, 56, "ENUM('yes', 'no') DEFAULT 'yes'", "no");
- pdo_mysql_stmt_bindparam_types($db, 57, "SET('yes', 'no') DEFAULT 'yes'", "no");
-
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
-
- print "done!";
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db);
+
+ function pdo_mysql_stmt_bindparam_types_do($db, $offset, $native, $sql_type, $value) {
+
+ if ($native)
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ else
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
+
+ $db->exec('DROP TABLE IF EXISTS test');
+ $sql = sprintf('CREATE TABLE test(id INT, label %s) ENGINE=%s', $sql_type, MySQLPDOTest::getTableEngine());
+ if ((!$stmt = @$db->prepare($sql)) || (!@$stmt->execute()))
+ // Server might not support column type - skip it
+ return true;
+
+ $stmt = $db->prepare('INSERT INTO test(id, label) VALUES (1, ?)');
+ if (!$stmt->bindParam(1, $value)) {
+ printf("[%03d/%s + 1] %s\n", $offset, ($native) ? 'native' : 'emulated',
+ var_export($stmt->errorInfo(), true));
+ return false;
+ }
+ if (!$stmt->execute()) {
+ printf("[%03d/%s + 2] %s\n", $offset, ($native) ? 'native' : 'emulated',
+ var_export($stmt->errorInfo(), true));
+ return false;
+ }
+
+ $stmt = $db->query('SELECT id, label FROM test');
+ $id = $label = null;
+ if (!$stmt->bindColumn(1, $id)) {
+ printf("[%03d/%s + 3] %s\n", $offset, ($native) ? 'native' : 'emulated',
+ var_export($stmt->errorInfo(), true));
+ return false;
+ }
+ if (!$stmt->bindColumn(2, $label)) {
+ printf("[%03d/%s + 4] %s\n", $offset, ($native) ? 'native' : 'emulated',
+ var_export($stmt->errorInfo(), true));
+ return false;
+ }
+
+ if (!$stmt->fetch(PDO::FETCH_BOUND)) {
+ printf("[%03d/%s + 5] %s\n", $offset, ($native) ? 'native' : 'emulated',
+ var_export($stmt->errorInfo(), true));
+ return false;
+ }
+ $stmt->closeCursor();
+
+ if ($label != $value) {
+ printf("[%03d/%s + 6] Got %s expecting %s - please check manually\n",
+ $offset, ($native) ? 'native' : 'emulated',
+ var_export($label, true), var_export($value, true));
+ // fall through
+ }
+
+ $stmt->execute();
+ $row = $stmt->fetch(PDO::FETCH_ASSOC);
+ if (empty($row)) {
+ printf("[%03d/%s + 7] %s\n", $offset, ($native) ? 'native' : 'emulated',
+ var_export($stmt->errorInfo(), true));
+ return false;
+ }
+
+ if ($row['label'] != $value) {
+ printf("[%03d/%s + 8] Got %s expecting %s - please check manually\n",
+ $offset, ($native) ? 'native' : 'emulated',
+ var_export($row['label'], true), var_export($value, true));
+ return false;
+ }
+
+ if ($row['label'] != $label) {
+ printf("[%03d/%s + 9] Got %s from FETCH_ASSOC and %s from FETCH_BOUND- please check manually\n",
+ $offset, ($native) ? 'native' : 'emulated',
+ var_export($row['label'], true), var_export($value, true));
+ return false;
+ }
+
+ $db->exec('DROP TABLE IF EXISTS test');
+ return true;
+ }
+
+ function pdo_mysql_stmt_bindparam_types($db, $offset, $sql_type, $value) {
+
+ pdo_mysql_stmt_bindparam_types_do($db, $offset, true, $sql_type, $value);
+ pdo_mysql_stmt_bindparam_types_do($db, $offset, false, $sql_type, $value);
+
+ }
+
+ try {
+
+ // pdo_mysql_stmt_bindparam_types($db, 2, 'BIT(8)', 1);
+ pdo_mysql_stmt_bindparam_types($db, 3, 'TINYINT', -127);
+ pdo_mysql_stmt_bindparam_types($db, 4, 'TINYINT UNSIGNED', 255);
+ pdo_mysql_stmt_bindparam_types($db, 5, 'BOOLEAN', 1);
+ pdo_mysql_stmt_bindparam_types($db, 6, 'SMALLINT', -32768);
+ pdo_mysql_stmt_bindparam_types($db, 7, 'SMALLINT UNSIGNED', 65535);
+ pdo_mysql_stmt_bindparam_types($db, 8, 'MEDIUMINT', -8388608);
+ pdo_mysql_stmt_bindparam_types($db, 9, 'MEDIUMINT UNSIGNED', 16777215);
+ pdo_mysql_stmt_bindparam_types($db, 10, 'INT', -2147483648);
+ pdo_mysql_stmt_bindparam_types($db, 11, 'INT UNSIGNED', 4294967295);
+ pdo_mysql_stmt_bindparam_types($db, 12, 'BIGINT', -1000);
+ pdo_mysql_stmt_bindparam_types($db, 13, 'BIGINT UNSIGNED', 1000);
+ pdo_mysql_stmt_bindparam_types($db, 14, 'REAL', -1000);
+ pdo_mysql_stmt_bindparam_types($db, 15, 'REAL UNSIGNED', 1000);
+ pdo_mysql_stmt_bindparam_types($db, 16, 'REAL ZEROFILL', '0000000000000000000000');
+ pdo_mysql_stmt_bindparam_types($db, 17, 'REAL UNSIGNED ZEROFILL', '0000000000000000000010');
+ pdo_mysql_stmt_bindparam_types($db, 18, 'DOUBLE', -1000);
+ pdo_mysql_stmt_bindparam_types($db, 19, 'DOUBLE UNSIGNED', 1000);
+ pdo_mysql_stmt_bindparam_types($db, 20, 'DOUBLE ZEROFILL', '000000000000');
+ pdo_mysql_stmt_bindparam_types($db, 21, 'DOUBLE ZEROFILL UNSIGNED', '000000001000');
+ pdo_mysql_stmt_bindparam_types($db, 22, 'FLOAT', -1000);
+ pdo_mysql_stmt_bindparam_types($db, 23, 'FLOAT UNSIGNED', 1000);
+ pdo_mysql_stmt_bindparam_types($db, 24, 'FLOAT ZEROFILL', '000000000000');
+ pdo_mysql_stmt_bindparam_types($db, 25, 'FLOAT ZEROFILL UNSIGNED', '000000001000');
+ pdo_mysql_stmt_bindparam_types($db, 26, 'DECIMAL', -1000);
+ pdo_mysql_stmt_bindparam_types($db, 27, 'DECIMAL UNSIGNED', 1000);
+ pdo_mysql_stmt_bindparam_types($db, 28, 'DECIMAL ZEROFILL', '000000000000');
+ pdo_mysql_stmt_bindparam_types($db, 29, 'DECIMAL ZEROFILL UNSIGNED', '000000001000');
+ pdo_mysql_stmt_bindparam_types($db, 30, 'NUMERIC', -1000);
+ pdo_mysql_stmt_bindparam_types($db, 31, 'NUMERIC UNSIGNED', 1000);
+ pdo_mysql_stmt_bindparam_types($db, 32, 'NUMERIC ZEROFILL', '000000000000');
+ pdo_mysql_stmt_bindparam_types($db, 33, 'NUMERIC ZEROFILL UNSIGNED', '000000001000');
+ pdo_mysql_stmt_bindparam_types($db, 34, 'DATE', '2008-04-23');
+ pdo_mysql_stmt_bindparam_types($db, 35, 'TIME', '16:43:12');
+ pdo_mysql_stmt_bindparam_types($db, 36, 'TIMESTAMP', '2008-04-23 16:44:53');
+ pdo_mysql_stmt_bindparam_types($db, 37, 'DATETIME', '2008-04-23 16:44:53');
+ pdo_mysql_stmt_bindparam_types($db, 38, 'YEAR', '2008');
+ pdo_mysql_stmt_bindparam_types($db, 39, 'CHAR(1)', 'a');
+ pdo_mysql_stmt_bindparam_types($db, 40, 'CHAR(255)', 'abc');
+ pdo_mysql_stmt_bindparam_types($db, 41, 'VARCHAR(255)', str_repeat('a', 255));
+ pdo_mysql_stmt_bindparam_types($db, 42, 'BINARY(255)', str_repeat('a', 255));
+ pdo_mysql_stmt_bindparam_types($db, 43, 'VARBINARY(255)', str_repeat('a', 255));
+ pdo_mysql_stmt_bindparam_types($db, 44, 'TINYBLOB', str_repeat('a', 255));
+ pdo_mysql_stmt_bindparam_types($db, 45, 'BLOB', str_repeat('b', 300));
+ pdo_mysql_stmt_bindparam_types($db, 46, 'MEDIUMBLOB', str_repeat('b', 300));
+ pdo_mysql_stmt_bindparam_types($db, 47, 'LONGBLOB', str_repeat('b', 300));
+ pdo_mysql_stmt_bindparam_types($db, 48, 'TINYTEXT', str_repeat('c', 255));
+ pdo_mysql_stmt_bindparam_types($db, 49, 'TINYTEXT BINARY', str_repeat('c', 255));
+ pdo_mysql_stmt_bindparam_types($db, 50, 'TEXT', str_repeat('d', 300));
+ pdo_mysql_stmt_bindparam_types($db, 51, 'TEXT BINARY', str_repeat('d', 300));
+ pdo_mysql_stmt_bindparam_types($db, 52, 'MEDIUMTEXT', str_repeat('d', 300));
+ pdo_mysql_stmt_bindparam_types($db, 53, 'MEDIUMTEXT BINARY', str_repeat('d', 300));
+ pdo_mysql_stmt_bindparam_types($db, 54, 'LONGTEXT', str_repeat('d', 300));
+ pdo_mysql_stmt_bindparam_types($db, 55, 'LONGTEXT BINARY', str_repeat('d', 300));
+ pdo_mysql_stmt_bindparam_types($db, 56, "ENUM('yes', 'no') DEFAULT 'yes'", "no");
+ pdo_mysql_stmt_bindparam_types($db, 57, "SET('yes', 'no') DEFAULT 'yes'", "no");
+
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
+
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_bindvalue.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_bindvalue.phpt
index 173105a48e..537156ebbf 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_bindvalue.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_bindvalue.phpt
@@ -9,291 +9,291 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db);
-
- printf("Testing native PS...\n");
- try {
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to turn off emulated prepared statements\n");
-
- printf("Binding variable...\n");
- $stmt = $db->prepare('SELECT id, label FROM test WHERE id > ? ORDER BY id ASC LIMIT 2');
- $in = 0;
- if (!$stmt->bindValue(1, $in))
- printf("[003] Cannot bind value, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- $stmt->execute();
- $id = $label = null;
-
- if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
- printf("[004] Cannot bind integer column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
- printf("[005] Cannot bind string column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- while ($stmt->fetch(PDO::FETCH_BOUND))
- printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
- $in,
- var_export($id, true), gettype($id),
- var_export($label, true), gettype($label));
-
- printf("Binding value and not variable...\n");
- if (!$stmt->bindValue(1, 0))
- printf("[006] Cannot bind value, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- $stmt->execute();
- $id = $label = null;
-
- if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
- printf("[007] Cannot bind integer column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
- printf("[008] Cannot bind string column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- while ($stmt->fetch(PDO::FETCH_BOUND))
- printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
- $in,
- var_export($id, true), gettype($id),
- var_export($label, true), gettype($label));
-
- printf("Binding variable which references another variable...\n");
- $in = 0;
- $in_ref = &$in;
- if (!$stmt->bindValue(1, $in_ref))
- printf("[009] Cannot bind value, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- $stmt->execute();
- $id = $label = null;
-
- if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
- printf("[010] Cannot bind integer column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
- printf("[011] Cannot bind string column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- while ($stmt->fetch(PDO::FETCH_BOUND))
- printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
- $in,
- var_export($id, true), gettype($id),
- var_export($label, true), gettype($label));
-
-
- printf("Binding a variable and a value...\n");
- $stmt = $db->prepare('SELECT id, label FROM test WHERE id > ? AND id <= ? ORDER BY id ASC LIMIT 2');
- $in = 0;
- if (!$stmt->bindValue(1, $in))
- printf("[012] Cannot bind value, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- if (!$stmt->bindValue(2, 2))
- printf("[013] Cannot bind value, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- $stmt->execute();
- $id = $label = null;
-
- if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
- printf("[014] Cannot bind integer column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
- printf("[015] Cannot bind string column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- while ($stmt->fetch(PDO::FETCH_BOUND))
- printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
- $in,
- var_export($id, true), gettype($id),
- var_export($label, true), gettype($label));
-
- printf("Binding a variable to two placeholders and changing the variable value in between the binds...\n");
- // variable value change shall have no impact
- $stmt = $db->prepare('SELECT id, label FROM test WHERE id > ? AND id <= ? ORDER BY id ASC LIMIT 2');
- $in = 0;
- if (!$stmt->bindValue(1, $in))
- printf("[016] Cannot bind value, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- $in = 2;
- if (!$stmt->bindValue(2, $in))
- printf("[017] Cannot bind value, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- $stmt->execute();
- $id = $label = null;
-
- if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
- printf("[018] Cannot bind integer column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
- printf("[019] Cannot bind string column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- while ($stmt->fetch(PDO::FETCH_BOUND))
- printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
- $in,
- var_export($id, true), gettype($id),
- var_export($label, true), gettype($label));
-
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
-
- printf("Testing emulated PS...\n");
- try {
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
- if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to turn on emulated prepared statements\n");
-
- printf("Binding variable...\n");
- $stmt = $db->prepare('SELECT id, label FROM test WHERE id > ? ORDER BY id ASC LIMIT 2');
- $in = 0;
- if (!$stmt->bindValue(1, $in))
- printf("[003] Cannot bind value, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- $stmt->execute();
- $id = $label = null;
-
- if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
- printf("[004] Cannot bind integer column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
- printf("[005] Cannot bind string column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- while ($stmt->fetch(PDO::FETCH_BOUND))
- printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
- $in,
- var_export($id, true), gettype($id),
- var_export($label, true), gettype($label));
-
- printf("Binding value and not variable...\n");
- if (!$stmt->bindValue(1, 0))
- printf("[006] Cannot bind value, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- $stmt->execute();
- $id = $label = null;
-
- if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
- printf("[007] Cannot bind integer column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
- printf("[008] Cannot bind string column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- while ($stmt->fetch(PDO::FETCH_BOUND))
- printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
- $in,
- var_export($id, true), gettype($id),
- var_export($label, true), gettype($label));
-
- printf("Binding variable which references another variable...\n");
- $in = 0;
- $in_ref = &$in;
- if (!$stmt->bindValue(1, $in_ref))
- printf("[009] Cannot bind value, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- $stmt->execute();
- $id = $label = null;
-
- if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
- printf("[010] Cannot bind integer column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
- printf("[011] Cannot bind string column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- while ($stmt->fetch(PDO::FETCH_BOUND))
- printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
- $in,
- var_export($id, true), gettype($id),
- var_export($label, true), gettype($label));
-
-
- printf("Binding a variable and a value...\n");
- $stmt = $db->prepare('SELECT id, label FROM test WHERE id > ? AND id <= ? ORDER BY id ASC LIMIT 2');
- $in = 0;
- if (!$stmt->bindValue(1, $in))
- printf("[012] Cannot bind value, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- if (!$stmt->bindValue(2, 2))
- printf("[013] Cannot bind value, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- $stmt->execute();
- $id = $label = null;
-
- if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
- printf("[014] Cannot bind integer column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
- printf("[015] Cannot bind string column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- while ($stmt->fetch(PDO::FETCH_BOUND))
- printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
- $in,
- var_export($id, true), gettype($id),
- var_export($label, true), gettype($label));
-
- printf("Binding a variable to two placeholders and changing the variable value in between the binds...\n");
- // variable value change shall have no impact
- $stmt = $db->prepare('SELECT id, label FROM test WHERE id > ? AND id <= ? ORDER BY id ASC LIMIT 2');
- $in = 0;
- if (!$stmt->bindValue(1, $in))
- printf("[016] Cannot bind value, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- $in = 2;
- if (!$stmt->bindValue(2, $in))
- printf("[017] Cannot bind value, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- $stmt->execute();
- $id = $label = null;
-
- if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
- printf("[018] Cannot bind integer column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
- printf("[019] Cannot bind string column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- while ($stmt->fetch(PDO::FETCH_BOUND))
- printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
- $in,
- var_export($id, true), gettype($id),
- var_export($label, true), gettype($label));
-
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
-
- print "done!";
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db);
+
+ printf("Testing native PS...\n");
+ try {
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to turn off emulated prepared statements\n");
+
+ printf("Binding variable...\n");
+ $stmt = $db->prepare('SELECT id, label FROM test WHERE id > ? ORDER BY id ASC LIMIT 2');
+ $in = 0;
+ if (!$stmt->bindValue(1, $in))
+ printf("[003] Cannot bind value, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ $stmt->execute();
+ $id = $label = null;
+
+ if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
+ printf("[004] Cannot bind integer column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
+ printf("[005] Cannot bind string column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ while ($stmt->fetch(PDO::FETCH_BOUND))
+ printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
+ $in,
+ var_export($id, true), gettype($id),
+ var_export($label, true), gettype($label));
+
+ printf("Binding value and not variable...\n");
+ if (!$stmt->bindValue(1, 0))
+ printf("[006] Cannot bind value, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ $stmt->execute();
+ $id = $label = null;
+
+ if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
+ printf("[007] Cannot bind integer column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
+ printf("[008] Cannot bind string column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ while ($stmt->fetch(PDO::FETCH_BOUND))
+ printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
+ $in,
+ var_export($id, true), gettype($id),
+ var_export($label, true), gettype($label));
+
+ printf("Binding variable which references another variable...\n");
+ $in = 0;
+ $in_ref = &$in;
+ if (!$stmt->bindValue(1, $in_ref))
+ printf("[009] Cannot bind value, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ $stmt->execute();
+ $id = $label = null;
+
+ if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
+ printf("[010] Cannot bind integer column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
+ printf("[011] Cannot bind string column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ while ($stmt->fetch(PDO::FETCH_BOUND))
+ printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
+ $in,
+ var_export($id, true), gettype($id),
+ var_export($label, true), gettype($label));
+
+
+ printf("Binding a variable and a value...\n");
+ $stmt = $db->prepare('SELECT id, label FROM test WHERE id > ? AND id <= ? ORDER BY id ASC LIMIT 2');
+ $in = 0;
+ if (!$stmt->bindValue(1, $in))
+ printf("[012] Cannot bind value, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ if (!$stmt->bindValue(2, 2))
+ printf("[013] Cannot bind value, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ $stmt->execute();
+ $id = $label = null;
+
+ if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
+ printf("[014] Cannot bind integer column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
+ printf("[015] Cannot bind string column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ while ($stmt->fetch(PDO::FETCH_BOUND))
+ printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
+ $in,
+ var_export($id, true), gettype($id),
+ var_export($label, true), gettype($label));
+
+ printf("Binding a variable to two placeholders and changing the variable value in between the binds...\n");
+ // variable value change shall have no impact
+ $stmt = $db->prepare('SELECT id, label FROM test WHERE id > ? AND id <= ? ORDER BY id ASC LIMIT 2');
+ $in = 0;
+ if (!$stmt->bindValue(1, $in))
+ printf("[016] Cannot bind value, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ $in = 2;
+ if (!$stmt->bindValue(2, $in))
+ printf("[017] Cannot bind value, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ $stmt->execute();
+ $id = $label = null;
+
+ if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
+ printf("[018] Cannot bind integer column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
+ printf("[019] Cannot bind string column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ while ($stmt->fetch(PDO::FETCH_BOUND))
+ printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
+ $in,
+ var_export($id, true), gettype($id),
+ var_export($label, true), gettype($label));
+
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
+
+ printf("Testing emulated PS...\n");
+ try {
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
+ if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to turn on emulated prepared statements\n");
+
+ printf("Binding variable...\n");
+ $stmt = $db->prepare('SELECT id, label FROM test WHERE id > ? ORDER BY id ASC LIMIT 2');
+ $in = 0;
+ if (!$stmt->bindValue(1, $in))
+ printf("[003] Cannot bind value, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ $stmt->execute();
+ $id = $label = null;
+
+ if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
+ printf("[004] Cannot bind integer column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
+ printf("[005] Cannot bind string column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ while ($stmt->fetch(PDO::FETCH_BOUND))
+ printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
+ $in,
+ var_export($id, true), gettype($id),
+ var_export($label, true), gettype($label));
+
+ printf("Binding value and not variable...\n");
+ if (!$stmt->bindValue(1, 0))
+ printf("[006] Cannot bind value, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ $stmt->execute();
+ $id = $label = null;
+
+ if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
+ printf("[007] Cannot bind integer column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
+ printf("[008] Cannot bind string column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ while ($stmt->fetch(PDO::FETCH_BOUND))
+ printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
+ $in,
+ var_export($id, true), gettype($id),
+ var_export($label, true), gettype($label));
+
+ printf("Binding variable which references another variable...\n");
+ $in = 0;
+ $in_ref = &$in;
+ if (!$stmt->bindValue(1, $in_ref))
+ printf("[009] Cannot bind value, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ $stmt->execute();
+ $id = $label = null;
+
+ if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
+ printf("[010] Cannot bind integer column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
+ printf("[011] Cannot bind string column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ while ($stmt->fetch(PDO::FETCH_BOUND))
+ printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
+ $in,
+ var_export($id, true), gettype($id),
+ var_export($label, true), gettype($label));
+
+
+ printf("Binding a variable and a value...\n");
+ $stmt = $db->prepare('SELECT id, label FROM test WHERE id > ? AND id <= ? ORDER BY id ASC LIMIT 2');
+ $in = 0;
+ if (!$stmt->bindValue(1, $in))
+ printf("[012] Cannot bind value, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ if (!$stmt->bindValue(2, 2))
+ printf("[013] Cannot bind value, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ $stmt->execute();
+ $id = $label = null;
+
+ if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
+ printf("[014] Cannot bind integer column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
+ printf("[015] Cannot bind string column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ while ($stmt->fetch(PDO::FETCH_BOUND))
+ printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
+ $in,
+ var_export($id, true), gettype($id),
+ var_export($label, true), gettype($label));
+
+ printf("Binding a variable to two placeholders and changing the variable value in between the binds...\n");
+ // variable value change shall have no impact
+ $stmt = $db->prepare('SELECT id, label FROM test WHERE id > ? AND id <= ? ORDER BY id ASC LIMIT 2');
+ $in = 0;
+ if (!$stmt->bindValue(1, $in))
+ printf("[016] Cannot bind value, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ $in = 2;
+ if (!$stmt->bindValue(2, $in))
+ printf("[017] Cannot bind value, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ $stmt->execute();
+ $id = $label = null;
+
+ if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
+ printf("[018] Cannot bind integer column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
+ printf("[019] Cannot bind string column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ while ($stmt->fetch(PDO::FETCH_BOUND))
+ printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
+ $in,
+ var_export($id, true), gettype($id),
+ var_export($label, true), gettype($label));
+
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
+
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_blobfromsteam.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_blobfromsteam.phpt
index bea8773a23..9d6ee3d9b8 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_blobfromsteam.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_blobfromsteam.phpt
@@ -28,112 +28,112 @@ unlink($file);
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
-
- function blob_from_stream($offset, $db, $file, $blob) {
-
- @unlink($file);
- clearstatcache();
- if (file_exists($file)) {
- printf("[%03d + 1] Cannot remove old test file\n", $offset);
- return false;
- }
-
- $fp = fopen($file, 'w');
- if (!$fp || !fwrite($fp, $blob)) {
- printf("[%03d + 2] Cannot create test file '%s'\n", $offset, $file);
- return false;
- }
-
- fclose($fp);
- clearstatcache();
- if (!file_exists($file)) {
- printf("[%03d + 3] Failed to create test file '%s'\n", $offset, $file);
- return false;
- }
-
- $db->exec('DROP TABLE IF EXISTS test');
- $sql = sprintf('CREATE TABLE test(id INT, label BLOB) ENGINE=%s', PDO_MYSQL_TEST_ENGINE);
- $db->exec($sql);
-
- if (!$stmt = $db->prepare('INSERT INTO test(id, label) VALUES (?, ?)')) {
- printf("[%03d + 4] %s\n", $offset, var_export($db->errorInfo(), true));
- return false;
- }
-
- $fp = fopen($file, 'r');
- if (!$fp) {
- printf("[%03d + 5] Cannot create test file '%s'\n", $offset, $file);
- return false;
- }
-
-
- $id = 1;
- $stmt->bindParam(1, $id);
- if (true !== ($tmp = $stmt->bindParam(2, $fp, PDO::PARAM_LOB))) {
- printf("[%03d + 6] Expecting true, got %s. %s\n",
- $offset,
- var_export($tmp, true),
- var_export($db->errorInfo(), true));
- return false;
- }
-
- if (true !== $stmt->execute()) {
- printf("[%03d + 7] Failed to INSERT data, %s\n", $offset, var_export($stmt->errorInfo(), true));
- return false;
- }
-
- $stmt2 = $db->query('SELECT id, label FROM test WHERE id = 1');
- $row = $stmt2->fetch(PDO::FETCH_ASSOC);
- if ($row['label'] != $blob) {
- printf("[%03d + 8] INSERT and/or SELECT has failed, dumping data.\n", $offset);
- var_dump($row);
- var_dump($blob);
- return false;
- }
-
- // Lets test the chr(0) handling in case the streaming has failed:
- // is the bug about chr(0) or the streaming...
- $db->exec('DELETE FROM test');
- $stmt = $db->prepare('INSERT INTO test(id, label) VALUES (?, ?)');
- $stmt->bindParam(1, $id);
- $stmt->bindParam(2, $blob);
- if (true !== $stmt->execute())
- printf("[%03d + 9] %s\n", $offset, var_export($stmt->errorInfo(), true));
-
- $stmt2 = $db->query('SELECT id, label FROM test WHERE id = 1');
- $row = $stmt2->fetch(PDO::FETCH_ASSOC);
- if ($row['label'] != $blob) {
- printf("[%03d + 10] INSERT and/or SELECT has failed, dumping data.\n", $offset);
- var_dump($row);
- var_dump($blob);
- return false;
- }
-
- return true;
- }
-
- $db = MySQLPDOTest::factory();
- $blob = 'I am a mighty BLOB!' . chr(0) . "I am a binary thingie!";
- $tmp = MySQLPDOTest::getTempDir();
- $file = $tmp . DIRECTORY_SEPARATOR . 'pdoblob.tst';
-
- try {
-
- printf("Emulated PS...\n");
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
- blob_from_stream(10, $db, $file, $blob);
-
- printf("Native PS...\n");
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
- blob_from_stream(30, $db, $file, $blob);
-
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
-
- print "done!";
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+
+ function blob_from_stream($offset, $db, $file, $blob) {
+
+ @unlink($file);
+ clearstatcache();
+ if (file_exists($file)) {
+ printf("[%03d + 1] Cannot remove old test file\n", $offset);
+ return false;
+ }
+
+ $fp = fopen($file, 'w');
+ if (!$fp || !fwrite($fp, $blob)) {
+ printf("[%03d + 2] Cannot create test file '%s'\n", $offset, $file);
+ return false;
+ }
+
+ fclose($fp);
+ clearstatcache();
+ if (!file_exists($file)) {
+ printf("[%03d + 3] Failed to create test file '%s'\n", $offset, $file);
+ return false;
+ }
+
+ $db->exec('DROP TABLE IF EXISTS test');
+ $sql = sprintf('CREATE TABLE test(id INT, label BLOB) ENGINE=%s', PDO_MYSQL_TEST_ENGINE);
+ $db->exec($sql);
+
+ if (!$stmt = $db->prepare('INSERT INTO test(id, label) VALUES (?, ?)')) {
+ printf("[%03d + 4] %s\n", $offset, var_export($db->errorInfo(), true));
+ return false;
+ }
+
+ $fp = fopen($file, 'r');
+ if (!$fp) {
+ printf("[%03d + 5] Cannot create test file '%s'\n", $offset, $file);
+ return false;
+ }
+
+
+ $id = 1;
+ $stmt->bindParam(1, $id);
+ if (true !== ($tmp = $stmt->bindParam(2, $fp, PDO::PARAM_LOB))) {
+ printf("[%03d + 6] Expecting true, got %s. %s\n",
+ $offset,
+ var_export($tmp, true),
+ var_export($db->errorInfo(), true));
+ return false;
+ }
+
+ if (true !== $stmt->execute()) {
+ printf("[%03d + 7] Failed to INSERT data, %s\n", $offset, var_export($stmt->errorInfo(), true));
+ return false;
+ }
+
+ $stmt2 = $db->query('SELECT id, label FROM test WHERE id = 1');
+ $row = $stmt2->fetch(PDO::FETCH_ASSOC);
+ if ($row['label'] != $blob) {
+ printf("[%03d + 8] INSERT and/or SELECT has failed, dumping data.\n", $offset);
+ var_dump($row);
+ var_dump($blob);
+ return false;
+ }
+
+ // Lets test the chr(0) handling in case the streaming has failed:
+ // is the bug about chr(0) or the streaming...
+ $db->exec('DELETE FROM test');
+ $stmt = $db->prepare('INSERT INTO test(id, label) VALUES (?, ?)');
+ $stmt->bindParam(1, $id);
+ $stmt->bindParam(2, $blob);
+ if (true !== $stmt->execute())
+ printf("[%03d + 9] %s\n", $offset, var_export($stmt->errorInfo(), true));
+
+ $stmt2 = $db->query('SELECT id, label FROM test WHERE id = 1');
+ $row = $stmt2->fetch(PDO::FETCH_ASSOC);
+ if ($row['label'] != $blob) {
+ printf("[%03d + 10] INSERT and/or SELECT has failed, dumping data.\n", $offset);
+ var_dump($row);
+ var_dump($blob);
+ return false;
+ }
+
+ return true;
+ }
+
+ $db = MySQLPDOTest::factory();
+ $blob = 'I am a mighty BLOB!' . chr(0) . "I am a binary thingie!";
+ $tmp = MySQLPDOTest::getTempDir();
+ $file = $tmp . DIRECTORY_SEPARATOR . 'pdoblob.tst';
+
+ try {
+
+ printf("Emulated PS...\n");
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
+ blob_from_stream(10, $db, $file, $blob);
+
+ printf("Native PS...\n");
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
+ blob_from_stream(30, $db, $file, $blob);
+
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
+
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_blobs.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_blobs.phpt
index a247de534e..9bdd03d7bd 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_blobs.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_blobs.phpt
@@ -8,85 +8,85 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- $blobs = array(
- 'TINYBLOB' => 255,
- 'TINYTEXT' => 255,
- 'BLOB' => 32767,
- 'TEXT' => 32767,
- 'MEDIUMBLOB' => 100000,
- 'MEDIUMTEXT' => 100000,
- 'LONGBLOB' => 100000,
- 'LONGTEXT' => 100000,
- );
+ $blobs = array(
+ 'TINYBLOB' => 255,
+ 'TINYTEXT' => 255,
+ 'BLOB' => 32767,
+ 'TEXT' => 32767,
+ 'MEDIUMBLOB' => 100000,
+ 'MEDIUMTEXT' => 100000,
+ 'LONGBLOB' => 100000,
+ 'LONGTEXT' => 100000,
+ );
- function test_blob($db, $offset, $sql_type, $test_len) {
+ function test_blob($db, $offset, $sql_type, $test_len) {
- $db->exec('DROP TABLE IF EXISTS test');
- $db->exec(sprintf('CREATE TABLE test(id INT, label %s) ENGINE=%s', $sql_type, PDO_MYSQL_TEST_ENGINE));
+ $db->exec('DROP TABLE IF EXISTS test');
+ $db->exec(sprintf('CREATE TABLE test(id INT, label %s) ENGINE=%s', $sql_type, PDO_MYSQL_TEST_ENGINE));
- $value = str_repeat('a', $test_len);
- $stmt = $db->prepare('INSERT INTO test(id, label) VALUES (?, ?)');
- $stmt->bindValue(1, 1);
- $stmt->bindValue(2, $value);
- if (!$stmt->execute()) {
- printf("[%03d + 1] %d %s\n",
- $offset, $stmt->errorCode(), var_export($stmt->errorInfo(), true));
- return false;
- }
+ $value = str_repeat('a', $test_len);
+ $stmt = $db->prepare('INSERT INTO test(id, label) VALUES (?, ?)');
+ $stmt->bindValue(1, 1);
+ $stmt->bindValue(2, $value);
+ if (!$stmt->execute()) {
+ printf("[%03d + 1] %d %s\n",
+ $offset, $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+ return false;
+ }
- $stmt = $db->query('SELECT id, label FROM test');
- $id = $label = NULL;
- $stmt->bindColumn(1, $id, PDO::PARAM_INT);
- $stmt->bindColumn(2, $label, PDO::PARAM_LOB);
+ $stmt = $db->query('SELECT id, label FROM test');
+ $id = $label = NULL;
+ $stmt->bindColumn(1, $id, PDO::PARAM_INT);
+ $stmt->bindColumn(2, $label, PDO::PARAM_LOB);
- if (!$stmt->fetch(PDO::FETCH_BOUND)) {
- printf("[%03d + 2] %d %s\n",
- $offset, $stmt->errorCode(), var_export($stmt->errorInfo(), true));
- return false;
- }
+ if (!$stmt->fetch(PDO::FETCH_BOUND)) {
+ printf("[%03d + 2] %d %s\n",
+ $offset, $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+ return false;
+ }
- if ($label !== $value) {
- printf("[%03d + 3] Returned value seems to be wrong (%d vs. %d characters). Check manually\n",
- $offset, strlen($label), strlen($value));
- return false;
- }
+ if ($label !== $value) {
+ printf("[%03d + 3] Returned value seems to be wrong (%d vs. %d characters). Check manually\n",
+ $offset, strlen($label), strlen($value));
+ return false;
+ }
- if (1 != $id) {
- printf("[%03d + 3] Returned id column value seems wrong, expecting 1 got %s.\n",
- $offset, var_export($id, true));
- return false;
- }
+ if (1 != $id) {
+ printf("[%03d + 3] Returned id column value seems wrong, expecting 1 got %s.\n",
+ $offset, var_export($id, true));
+ return false;
+ }
- $stmt = $db->query('SELECT id, label FROM test');
- $ret = $stmt->fetch(PDO::FETCH_ASSOC);
+ $stmt = $db->query('SELECT id, label FROM test');
+ $ret = $stmt->fetch(PDO::FETCH_ASSOC);
- if ($ret['label'] !== $value) {
- printf("[%03d + 3] Returned value seems to be wrong (%d vs. %d characters). Check manually\n",
- $offset, strlen($ret['label']), strlen($value));
- return false;
- }
+ if ($ret['label'] !== $value) {
+ printf("[%03d + 3] Returned value seems to be wrong (%d vs. %d characters). Check manually\n",
+ $offset, strlen($ret['label']), strlen($value));
+ return false;
+ }
- if (1 != $ret['id']) {
- printf("[%03d + 3] Returned id column value seems wrong, expecting 1 got %s.\n",
- $offset, var_export($ret['id'], true));
- return false;
- }
+ if (1 != $ret['id']) {
+ printf("[%03d + 3] Returned id column value seems wrong, expecting 1 got %s.\n",
+ $offset, var_export($ret['id'], true));
+ return false;
+ }
- return true;
- }
+ return true;
+ }
- $offset = 0;
- foreach ($blobs as $sql_type => $test_len) {
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
- test_blob($db, ++$offset, $sql_type, $test_len);
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
- test_blob($db, ++$offset, $sql_type, $test_len);
- }
+ $offset = 0;
+ foreach ($blobs as $sql_type => $test_len) {
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
+ test_blob($db, ++$offset, $sql_type, $test_len);
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
+ test_blob($db, ++$offset, $sql_type, $test_len);
+ }
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_closecursor.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_closecursor.phpt
index d0da7a8e16..4125155f6d 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_closecursor.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_closecursor.phpt
@@ -9,140 +9,140 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- /* TODO the results look wrong, why do we get 2014 with buffered AND unbuffered queries */
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
-
- function pdo_mysql_stmt_closecursor($db) {
-
- // This one should fail. I let it fail to prove that closeCursor() makes a difference.
- // If no error messages gets printed do not know if proper usage of closeCursor() makes any
- // difference or not. That's why we need to cause an error here.
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
- $stmt1 = $db->query('SELECT id, label FROM test ORDER BY id ASC');
- // query() shall fail!
- $stmt2 = $db->query('SELECT id, label FROM test ORDER BY id ASC');
- $stmt1->closeCursor();
-
- // This is proper usage of closeCursor(). It shall prevent any further error messages.
- if (MySQLPDOTest::isPDOMySQLnd()) {
- $stmt1 = $db->query('SELECT id, label FROM test ORDER BY id ASC');
- } else {
- // see pdo_mysql_stmt_unbuffered_2050.phpt for an explanation
- unset($stmt1);
- $stmt1 = $db->query('SELECT id, label FROM test ORDER BY id ASC');
- }
- // fetch only the first rows and let closeCursor() clean up
- $row1 = $stmt1->fetch(PDO::FETCH_ASSOC);
- $stmt1->closeCursor();
-
- $stmt2 = $db->prepare('UPDATE test SET label = ? WHERE id = ?');
- $stmt2->bindValue(1, "z");
-
- $stmt2->bindValue(2, $row1['id']);
- $stmt2->execute();
- $stmt2->closeCursor();
-
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
- // check if changing the fetch mode from unbuffered to buffered will
- // cause any harm to a statement created prior to the change
- $stmt1->execute();
- $row2 = $stmt1->fetch(PDO::FETCH_ASSOC);
- $stmt1->closeCursor();
- if (!isset($row2['label']) || ('z' !== $row2['label']))
- printf("Expecting array(id => 1, label => z) got %s\n", var_export($row2, true));
- unset($stmt1);
-
- $stmt1 = $db->query('SELECT id, label FROM test ORDER BY id ASC');
- // should work
- $stmt2 = $db->query('SELECT id, label FROM test ORDER BY id ASC');
- $stmt1->closeCursor();
-
- $stmt1 = $db->query('SELECT id, label FROM test ORDER BY id ASC');
- // fetch only the first rows and let closeCursor() clean up
- $row3 = $stmt1->fetch(PDO::FETCH_ASSOC);
- $stmt1->closeCursor();
- assert($row3 == $row2);
-
- $stmt2 = $db->prepare('UPDATE test SET label = ? WHERE id = ?');
- $stmt2->bindValue(1, "a");
- $stmt2->bindValue(2, $row1['id']);
- $stmt2->execute();
- $stmt2->closeCursor();
-
- $stmt1->execute();
- $row4 = $stmt1->fetch(PDO::FETCH_ASSOC);
- $stmt1->closeCursor();
- assert($row4 == $row1);
-
- $offset = 0;
- $stmt = $db->prepare('SELECT id, label FROM test WHERE id > ? ORDER BY id ASC LIMIT 2');
- $in = 0;
- if (!$stmt->bindParam(1, $in))
- printf("[%03d + 1] Cannot bind parameter, %s %s\n", $offset,
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- $stmt->execute();
- $id = $label = null;
-
- if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
- printf("[%03d + 2] Cannot bind integer column, %s %s\n", $offset,
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
- printf("[%03d + 3] Cannot bind string column, %s %s\n", $offset,
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
-
- while ($stmt->fetch(PDO::FETCH_BOUND))
- printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
- $in,
- var_export($id, true), gettype($id),
- var_export($label, true), gettype($label));
-
- $stmt->closeCursor();
- $stmt->execute();
-
- }
-
-
- try {
-
- printf("Testing emulated PS...\n");
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
- if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to turn on emulated prepared statements\n");
-
- printf("Buffered...\n");
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
- MySQLPDOTest::createTestTable($db);
- pdo_mysql_stmt_closecursor($db);
-
- printf("Unbuffered...\n");
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
- MySQLPDOTest::createTestTable($db);
- pdo_mysql_stmt_closecursor($db);
-
- printf("Testing native PS...\n");
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to turn off emulated prepared statements\n");
-
- printf("Buffered...\n");
- MySQLPDOTest::createTestTable($db);
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
- pdo_mysql_stmt_closecursor($db);
-
- printf("Unbuffered...\n");
- MySQLPDOTest::createTestTable($db);
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
- pdo_mysql_stmt_closecursor($db);
-
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
-
- print "done!";
+ /* TODO the results look wrong, why do we get 2014 with buffered AND unbuffered queries */
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+
+ function pdo_mysql_stmt_closecursor($db) {
+
+ // This one should fail. I let it fail to prove that closeCursor() makes a difference.
+ // If no error messages gets printed do not know if proper usage of closeCursor() makes any
+ // difference or not. That's why we need to cause an error here.
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
+ $stmt1 = $db->query('SELECT id, label FROM test ORDER BY id ASC');
+ // query() shall fail!
+ $stmt2 = $db->query('SELECT id, label FROM test ORDER BY id ASC');
+ $stmt1->closeCursor();
+
+ // This is proper usage of closeCursor(). It shall prevent any further error messages.
+ if (MySQLPDOTest::isPDOMySQLnd()) {
+ $stmt1 = $db->query('SELECT id, label FROM test ORDER BY id ASC');
+ } else {
+ // see pdo_mysql_stmt_unbuffered_2050.phpt for an explanation
+ unset($stmt1);
+ $stmt1 = $db->query('SELECT id, label FROM test ORDER BY id ASC');
+ }
+ // fetch only the first rows and let closeCursor() clean up
+ $row1 = $stmt1->fetch(PDO::FETCH_ASSOC);
+ $stmt1->closeCursor();
+
+ $stmt2 = $db->prepare('UPDATE test SET label = ? WHERE id = ?');
+ $stmt2->bindValue(1, "z");
+
+ $stmt2->bindValue(2, $row1['id']);
+ $stmt2->execute();
+ $stmt2->closeCursor();
+
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
+ // check if changing the fetch mode from unbuffered to buffered will
+ // cause any harm to a statement created prior to the change
+ $stmt1->execute();
+ $row2 = $stmt1->fetch(PDO::FETCH_ASSOC);
+ $stmt1->closeCursor();
+ if (!isset($row2['label']) || ('z' !== $row2['label']))
+ printf("Expecting array(id => 1, label => z) got %s\n", var_export($row2, true));
+ unset($stmt1);
+
+ $stmt1 = $db->query('SELECT id, label FROM test ORDER BY id ASC');
+ // should work
+ $stmt2 = $db->query('SELECT id, label FROM test ORDER BY id ASC');
+ $stmt1->closeCursor();
+
+ $stmt1 = $db->query('SELECT id, label FROM test ORDER BY id ASC');
+ // fetch only the first rows and let closeCursor() clean up
+ $row3 = $stmt1->fetch(PDO::FETCH_ASSOC);
+ $stmt1->closeCursor();
+ assert($row3 == $row2);
+
+ $stmt2 = $db->prepare('UPDATE test SET label = ? WHERE id = ?');
+ $stmt2->bindValue(1, "a");
+ $stmt2->bindValue(2, $row1['id']);
+ $stmt2->execute();
+ $stmt2->closeCursor();
+
+ $stmt1->execute();
+ $row4 = $stmt1->fetch(PDO::FETCH_ASSOC);
+ $stmt1->closeCursor();
+ assert($row4 == $row1);
+
+ $offset = 0;
+ $stmt = $db->prepare('SELECT id, label FROM test WHERE id > ? ORDER BY id ASC LIMIT 2');
+ $in = 0;
+ if (!$stmt->bindParam(1, $in))
+ printf("[%03d + 1] Cannot bind parameter, %s %s\n", $offset,
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ $stmt->execute();
+ $id = $label = null;
+
+ if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
+ printf("[%03d + 2] Cannot bind integer column, %s %s\n", $offset,
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
+ printf("[%03d + 3] Cannot bind string column, %s %s\n", $offset,
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+
+ while ($stmt->fetch(PDO::FETCH_BOUND))
+ printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
+ $in,
+ var_export($id, true), gettype($id),
+ var_export($label, true), gettype($label));
+
+ $stmt->closeCursor();
+ $stmt->execute();
+
+ }
+
+
+ try {
+
+ printf("Testing emulated PS...\n");
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
+ if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to turn on emulated prepared statements\n");
+
+ printf("Buffered...\n");
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
+ MySQLPDOTest::createTestTable($db);
+ pdo_mysql_stmt_closecursor($db);
+
+ printf("Unbuffered...\n");
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
+ MySQLPDOTest::createTestTable($db);
+ pdo_mysql_stmt_closecursor($db);
+
+ printf("Testing native PS...\n");
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to turn off emulated prepared statements\n");
+
+ printf("Buffered...\n");
+ MySQLPDOTest::createTestTable($db);
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
+ pdo_mysql_stmt_closecursor($db);
+
+ printf("Unbuffered...\n");
+ MySQLPDOTest::createTestTable($db);
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
+ pdo_mysql_stmt_closecursor($db);
+
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
+
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_closecursor_empty.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_closecursor_empty.phpt
index 77f663584a..e732ed5e34 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_closecursor_empty.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_closecursor_empty.phpt
@@ -9,57 +9,57 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- try {
+ try {
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to turn off emulated prepared statements\n");
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to turn off emulated prepared statements\n");
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
- MySQLPDOTest::createTestTable($db);
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
+ MySQLPDOTest::createTestTable($db);
- $stmt = $db->prepare('SELECT id, label FROM test WHERE id > ? ORDER BY id ASC LIMIT 2');
- $in = 0;
- if (!$stmt->bindParam(1, $in))
- printf("[003] Cannot bind parameter, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+ $stmt = $db->prepare('SELECT id, label FROM test WHERE id > ? ORDER BY id ASC LIMIT 2');
+ $in = 0;
+ if (!$stmt->bindParam(1, $in))
+ printf("[003] Cannot bind parameter, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
- $stmt->execute();
- $id = $label = null;
+ $stmt->execute();
+ $id = $label = null;
- if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
- printf("[004] Cannot bind integer column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+ if (!$stmt->bindColumn(1, $id, PDO::PARAM_INT))
+ printf("[004] Cannot bind integer column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
- if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
- printf("[005] Cannot bind string column, %s %s\n",
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+ if (!$stmt->bindColumn(2, $label, PDO::PARAM_STR))
+ printf("[005] Cannot bind string column, %s %s\n",
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
- while ($stmt->fetch(PDO::FETCH_BOUND))
- printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
- $in,
- var_export($id, true), gettype($id),
- var_export($label, true), gettype($label));
+ while ($stmt->fetch(PDO::FETCH_BOUND))
+ printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
+ $in,
+ var_export($id, true), gettype($id),
+ var_export($label, true), gettype($label));
- $stmt->closeCursor();
- $stmt->execute();
- while ($stmt->fetch(PDO::FETCH_BOUND))
- printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
- $in,
- var_export($id, true), gettype($id),
- var_export($label, true), gettype($label));
+ $stmt->closeCursor();
+ $stmt->execute();
+ while ($stmt->fetch(PDO::FETCH_BOUND))
+ printf("in = %d -> id = %s (%s) / label = %s (%s)\n",
+ $in,
+ var_export($id, true), gettype($id),
+ var_export($label, true), gettype($label));
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- $db->exec('DROP TABLE IF EXISTS test');
- print "done!";
+ $db->exec('DROP TABLE IF EXISTS test');
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_columncount.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_columncount.phpt
index a701469ed1..2c4de9f87c 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_columncount.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_columncount.phpt
@@ -9,50 +9,50 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db);
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db);
- // The only purpose of this is to check if emulated and native PS
+ // The only purpose of this is to check if emulated and native PS
// return the same. If it works for one, it should work for all.
- // Internal data structures should be the same in both cases.
- printf("Testing emulated PS...\n");
- try {
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
- if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to turn on emulated prepared statements\n");
+ // Internal data structures should be the same in both cases.
+ printf("Testing emulated PS...\n");
+ try {
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
+ if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to turn on emulated prepared statements\n");
- $stmt = $db->prepare("SELECT id, label, '?' as foo FROM test");
- $stmt->execute();
- var_dump($stmt->columnCount());
+ $stmt = $db->prepare("SELECT id, label, '?' as foo FROM test");
+ $stmt->execute();
+ var_dump($stmt->columnCount());
- $stmt = $db->query('SELECT * FROM test');
- var_dump($stmt->columnCount());
+ $stmt = $db->query('SELECT * FROM test');
+ var_dump($stmt->columnCount());
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- printf("Testing native PS...\n");
- try {
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[004] Unable to turn off emulated prepared statements\n");
+ printf("Testing native PS...\n");
+ try {
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[004] Unable to turn off emulated prepared statements\n");
- $stmt = $db->prepare("SELECT id, label, '?' as foo, 'TODO - Stored Procedure' as bar FROM test");
- $stmt->execute();
- var_dump($stmt->columnCount());
+ $stmt = $db->prepare("SELECT id, label, '?' as foo, 'TODO - Stored Procedure' as bar FROM test");
+ $stmt->execute();
+ var_dump($stmt->columnCount());
- $stmt = $db->query('SELECT * FROM test');
- var_dump($stmt->columnCount());
+ $stmt = $db->query('SELECT * FROM test');
+ var_dump($stmt->columnCount());
- } catch (PDOException $e) {
- printf("[003] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[003] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_errorcode.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_errorcode.phpt
index f77ba60f75..cfd30a635d 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_errorcode.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_errorcode.phpt
@@ -9,43 +9,43 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- $db->exec('DROP TABLE IF EXISTS ihopeitdoesnotexist');
+ $db->exec('DROP TABLE IF EXISTS ihopeitdoesnotexist');
- printf("Testing emulated PS...\n");
- try {
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
- if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to turn on emulated prepared statements\n");
+ printf("Testing emulated PS...\n");
+ try {
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
+ if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to turn on emulated prepared statements\n");
- $stmt = $db->prepare('SELECT id FROM ihopeitdoesnotexist ORDER BY id ASC');
- $stmt->execute();
- var_dump($stmt->errorCode());
+ $stmt = $db->prepare('SELECT id FROM ihopeitdoesnotexist ORDER BY id ASC');
+ $stmt->execute();
+ var_dump($stmt->errorCode());
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- printf("Testing native PS...\n");
- try {
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[004] Unable to turn off emulated prepared statements\n");
+ printf("Testing native PS...\n");
+ try {
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[004] Unable to turn off emulated prepared statements\n");
- $stmt = $db->prepare('SELECT id FROM ihopeitdoesnotexist ORDER BY id ASC');
- $stmt->execute();
- var_dump($stmt->errorCode());
+ $stmt = $db->prepare('SELECT id FROM ihopeitdoesnotexist ORDER BY id ASC');
+ $stmt->execute();
+ var_dump($stmt->errorCode());
- } catch (PDOException $e) {
- printf("[003] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[003] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- print "done!";
+ print "done!";
?>
--EXPECTF--
Testing emulated PS...
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_errorinfo.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_errorinfo.phpt
index e9dbeab3a6..b876628e25 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_errorinfo.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_errorinfo.phpt
@@ -9,55 +9,55 @@ $db = MySQLPDOTest::factory();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db);
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db);
- printf("Testing emulated PS...\n");
- try {
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
- if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to turn on emulated prepared statements\n");
+ printf("Testing emulated PS...\n");
+ try {
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
+ if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to turn on emulated prepared statements\n");
- $stmt = $db->prepare('SELECT id FROM ihopeitdoesnotexist ORDER BY id ASC');
- var_dump($stmt->errorInfo());
- $stmt->execute();
- var_dump($stmt->errorInfo());
+ $stmt = $db->prepare('SELECT id FROM ihopeitdoesnotexist ORDER BY id ASC');
+ var_dump($stmt->errorInfo());
+ $stmt->execute();
+ var_dump($stmt->errorInfo());
- MySQLPDOTest::createTestTable($db);
- $stmt = $db->prepare('SELECT label FROM test ORDER BY id ASC LIMIT 1');
- $db->exec('DROP TABLE test');
- var_dump($stmt->execute());
- var_dump($stmt->errorInfo());
- var_dump($db->errorInfo());
+ MySQLPDOTest::createTestTable($db);
+ $stmt = $db->prepare('SELECT label FROM test ORDER BY id ASC LIMIT 1');
+ $db->exec('DROP TABLE test');
+ var_dump($stmt->execute());
+ var_dump($stmt->errorInfo());
+ var_dump($db->errorInfo());
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorInfo(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorInfo(), implode(' ', $db->errorInfo()));
+ }
- printf("Testing native PS...\n");
- try {
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[004] Unable to turn off emulated prepared statements\n");
+ printf("Testing native PS...\n");
+ try {
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[004] Unable to turn off emulated prepared statements\n");
- $stmt = $db->prepare('SELECT id FROM ihopeitdoesnotexist ORDER BY id ASC');
- var_dump($stmt);
+ $stmt = $db->prepare('SELECT id FROM ihopeitdoesnotexist ORDER BY id ASC');
+ var_dump($stmt);
- MySQLPDOTest::createTestTable($db);
- $stmt = $db->prepare('SELECT label FROM test ORDER BY id ASC LIMIT 1');
- var_dump($stmt->errorInfo());
- $db->exec('DROP TABLE test');
- $stmt->execute();
- var_dump($stmt->errorInfo());
- var_dump($db->errorInfo());
+ MySQLPDOTest::createTestTable($db);
+ $stmt = $db->prepare('SELECT label FROM test ORDER BY id ASC LIMIT 1');
+ var_dump($stmt->errorInfo());
+ $db->exec('DROP TABLE test');
+ $stmt->execute();
+ var_dump($stmt->errorInfo());
+ var_dump($db->errorInfo());
- } catch (PDOException $e) {
- printf("[003] %s [%s] %s\n",
- $e->getMessage(), $db->errorInfo(), implode(' ', $db->errorInfo()));
- }
- print "done!";
+ } catch (PDOException $e) {
+ printf("[003] %s [%s] %s\n",
+ $e->getMessage(), $db->errorInfo(), implode(' ', $db->errorInfo()));
+ }
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_fetch_non_select.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_fetch_non_select.phpt
index 46ab4f911c..8e414a6c16 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_fetch_non_select.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_fetch_non_select.phpt
@@ -8,179 +8,179 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db);
-
- try {
-
- // Emulated PS first
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
- if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to turn on emulated prepared statements\n");
-
- if (!is_object($stmt = $db->query('DESCRIBE test id')))
- printf("[003] Emulated PS, DESCRIBE failed, %s\n", var_export($db->errorInfo(), true));
-
- $describe = array();
- $valid = false;
- while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
- $describe[] = $row;
- foreach ($row as $column => $value)
- if (isset($row['field']) && ($row['field'] == 'id'))
- $valid = true;
- }
- if (empty($describe))
- printf("[004] Emulated PS, DESCRIBE returned no results\n");
- else if (!$valid)
- printf("[005] Emulated PS, DESCRIBE, returned data seems wrong, dumping %s\n",
- var_export($describe, true));
-
- if (!is_object($stmt = $db->query('SHOW ENGINES')))
- printf("[006] Emulated PS, SHOW failed, %s\n", var_export($db->errorInfo(), true));
-
- $show = array();
- $valid = false;
- while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
- $show[] = $row;
- foreach ($row as $column => $value)
- // MyISAM engine should be part of _every_ MySQL today
- if ($value == 'MyISAM')
- $valid = true;
- }
- if (empty($show))
- printf("[007] Emulated PS, SHOW returned no results\n");
- else if (!$valid)
- printf("[008] Emulated PS, SHOW data seems wrong, dumping %s\n",
- var_export($show, true));
-
- if (!is_object($stmt = $db->query("EXPLAIN SELECT id FROM test")))
- printf("[009] Emulated PS, EXPLAIN returned no results\n");
-
- $explain = array();
- while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
- $explain[] = $row;
-
- if (empty($explain))
- printf("[010] Emulated PS, EXPLAIN returned no results\n");
-
- // And now native PS
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[011] Unable to turn off emulated prepared statements\n");
-
- $native_support = 'no';
- if ($db->exec("PREPARE mystmt FROM 'DESCRIBE test id'")) {
- $native_support = 'yes';
- $db->exec('DEALLOCATE PREPARE mystmt');
- }
-
- if (!is_object($stmt = $db->query('DESCRIBE test id')))
- printf("[012] Native PS (native support: %s), DESCRIBE failed, %s\n",
- $native_support,
- var_export($db->errorInfo(), true));
-
- $describe_native = array();
- $valid = false;
- while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
- $describe_native[] = $row;
- foreach ($row as $column => $value)
- if (isset($row['field']) && ($row['field'] == 'id'))
- $valid = true;
- }
- if (empty($describe_native))
- printf("[013] Native PS (native support: %s), DESCRIBE returned no results\n",
- $native_support);
- else if (!$valid)
- printf("[014] Native PS (native support: %s), DESCRIBE, returned data seems wrong, dumping %s\n",
- $native_support,
- var_export($describe_native, true));
-
- if ($describe != $describe_native)
- printf("[015] Emulated and native PS (native support: %s) results of DESCRIBE differ: %s vs. %s\n",
- $native_support,
- var_export($describe, true),
- var_export($describe_native, true));
-
-
- $native_support = 'no';
- if ($db->exec("PREPARE mystmt FROM 'SHOW ENGINES'")) {
- $native_support = 'yes';
- $db->exec('DEALLOCATE PREPARE mystmt');
- }
-
- if (!is_object($stmt = $db->query('SHOW ENGINES')))
- printf("[016] Native PS (native support: %s), SHOW failed, %s\n",
- $native_support,
- var_export($db->errorInfo(), true));
-
- $show_native = array();
- $valid = false;
- while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
- $show_native[] = $row;
- foreach ($row as $column => $value)
- // MyISAM engine should be part of _every_ MySQL today
- if ($value == 'MyISAM')
- $valid = true;
- }
- if (empty($show_native))
- printf("[017] Native PS (native support: %s), SHOW returned no results\n",
- $native_support);
- else if (!$valid)
- printf("[018] Native PS (native support: %s), SHOW data seems wrong, dumping %s\n",
- var_export($show_native, true));
-
- if ($show != $show_native)
- printf("Native PS (native support: %s) and emulated PS returned different data for SHOW: %s vs. %s\n",
- $native_support,
- var_export($show, true),
- var_export($show_native, true));
-
- $native_support = 'no';
- if ($db->exec("PREPARE mystmt FROM 'EXPLAIN SELECT id FROM test'")) {
- $native_support = 'yes';
- $db->exec('DEALLOCATE PREPARE mystmt');
- }
-
- if (!is_object($stmt = $db->query("EXPLAIN SELECT id FROM test")))
- printf("[012] Native PS (native support: %s), EXPLAIN failed, %s\n",
- $native_support,
- var_export($db->errorInfo(), true));
-
- $explain_native = array();
- while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
- $explain_native[] = $row;
-
- if (empty($explain_native))
- printf("[013] Native PS (native support: %s), EXPLAIN returned no results\n",
- $native_support);
-
- if ($explain != $explain_native)
- printf("Native PS (native support: %s) and emulated PS returned different data for EXPLAIN: %s vs. %s\n",
- $native_support,
- var_export($explain, true),
- var_export($explain_native, true));
-
- $stmt->execute();
- $explain_native = $stmt->fetchAll(PDO::FETCH_ASSOC);
- if ($explain != $explain_native)
- printf("Native PS (native support: %s) and emulated PS returned different data for EXPLAIN: %s vs. %s\n",
- $native_support,
- var_export($explain, true),
- var_export($explain_native, true));
-
- $stmt->execute();
- $stmt->execute();
- // libmysql needs this - otherwise we get a 2015 error
- if (!MYSQLPDOTest::isPDOMySQLnd())
- $stmt->fetchAll(PDO::FETCH_ASSOC);
-
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
-
- print "done!\n";
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db);
+
+ try {
+
+ // Emulated PS first
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
+ if (1 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to turn on emulated prepared statements\n");
+
+ if (!is_object($stmt = $db->query('DESCRIBE test id')))
+ printf("[003] Emulated PS, DESCRIBE failed, %s\n", var_export($db->errorInfo(), true));
+
+ $describe = array();
+ $valid = false;
+ while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
+ $describe[] = $row;
+ foreach ($row as $column => $value)
+ if (isset($row['field']) && ($row['field'] == 'id'))
+ $valid = true;
+ }
+ if (empty($describe))
+ printf("[004] Emulated PS, DESCRIBE returned no results\n");
+ else if (!$valid)
+ printf("[005] Emulated PS, DESCRIBE, returned data seems wrong, dumping %s\n",
+ var_export($describe, true));
+
+ if (!is_object($stmt = $db->query('SHOW ENGINES')))
+ printf("[006] Emulated PS, SHOW failed, %s\n", var_export($db->errorInfo(), true));
+
+ $show = array();
+ $valid = false;
+ while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
+ $show[] = $row;
+ foreach ($row as $column => $value)
+ // MyISAM engine should be part of _every_ MySQL today
+ if ($value == 'MyISAM')
+ $valid = true;
+ }
+ if (empty($show))
+ printf("[007] Emulated PS, SHOW returned no results\n");
+ else if (!$valid)
+ printf("[008] Emulated PS, SHOW data seems wrong, dumping %s\n",
+ var_export($show, true));
+
+ if (!is_object($stmt = $db->query("EXPLAIN SELECT id FROM test")))
+ printf("[009] Emulated PS, EXPLAIN returned no results\n");
+
+ $explain = array();
+ while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
+ $explain[] = $row;
+
+ if (empty($explain))
+ printf("[010] Emulated PS, EXPLAIN returned no results\n");
+
+ // And now native PS
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[011] Unable to turn off emulated prepared statements\n");
+
+ $native_support = 'no';
+ if ($db->exec("PREPARE mystmt FROM 'DESCRIBE test id'")) {
+ $native_support = 'yes';
+ $db->exec('DEALLOCATE PREPARE mystmt');
+ }
+
+ if (!is_object($stmt = $db->query('DESCRIBE test id')))
+ printf("[012] Native PS (native support: %s), DESCRIBE failed, %s\n",
+ $native_support,
+ var_export($db->errorInfo(), true));
+
+ $describe_native = array();
+ $valid = false;
+ while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
+ $describe_native[] = $row;
+ foreach ($row as $column => $value)
+ if (isset($row['field']) && ($row['field'] == 'id'))
+ $valid = true;
+ }
+ if (empty($describe_native))
+ printf("[013] Native PS (native support: %s), DESCRIBE returned no results\n",
+ $native_support);
+ else if (!$valid)
+ printf("[014] Native PS (native support: %s), DESCRIBE, returned data seems wrong, dumping %s\n",
+ $native_support,
+ var_export($describe_native, true));
+
+ if ($describe != $describe_native)
+ printf("[015] Emulated and native PS (native support: %s) results of DESCRIBE differ: %s vs. %s\n",
+ $native_support,
+ var_export($describe, true),
+ var_export($describe_native, true));
+
+
+ $native_support = 'no';
+ if ($db->exec("PREPARE mystmt FROM 'SHOW ENGINES'")) {
+ $native_support = 'yes';
+ $db->exec('DEALLOCATE PREPARE mystmt');
+ }
+
+ if (!is_object($stmt = $db->query('SHOW ENGINES')))
+ printf("[016] Native PS (native support: %s), SHOW failed, %s\n",
+ $native_support,
+ var_export($db->errorInfo(), true));
+
+ $show_native = array();
+ $valid = false;
+ while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
+ $show_native[] = $row;
+ foreach ($row as $column => $value)
+ // MyISAM engine should be part of _every_ MySQL today
+ if ($value == 'MyISAM')
+ $valid = true;
+ }
+ if (empty($show_native))
+ printf("[017] Native PS (native support: %s), SHOW returned no results\n",
+ $native_support);
+ else if (!$valid)
+ printf("[018] Native PS (native support: %s), SHOW data seems wrong, dumping %s\n",
+ var_export($show_native, true));
+
+ if ($show != $show_native)
+ printf("Native PS (native support: %s) and emulated PS returned different data for SHOW: %s vs. %s\n",
+ $native_support,
+ var_export($show, true),
+ var_export($show_native, true));
+
+ $native_support = 'no';
+ if ($db->exec("PREPARE mystmt FROM 'EXPLAIN SELECT id FROM test'")) {
+ $native_support = 'yes';
+ $db->exec('DEALLOCATE PREPARE mystmt');
+ }
+
+ if (!is_object($stmt = $db->query("EXPLAIN SELECT id FROM test")))
+ printf("[012] Native PS (native support: %s), EXPLAIN failed, %s\n",
+ $native_support,
+ var_export($db->errorInfo(), true));
+
+ $explain_native = array();
+ while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
+ $explain_native[] = $row;
+
+ if (empty($explain_native))
+ printf("[013] Native PS (native support: %s), EXPLAIN returned no results\n",
+ $native_support);
+
+ if ($explain != $explain_native)
+ printf("Native PS (native support: %s) and emulated PS returned different data for EXPLAIN: %s vs. %s\n",
+ $native_support,
+ var_export($explain, true),
+ var_export($explain_native, true));
+
+ $stmt->execute();
+ $explain_native = $stmt->fetchAll(PDO::FETCH_ASSOC);
+ if ($explain != $explain_native)
+ printf("Native PS (native support: %s) and emulated PS returned different data for EXPLAIN: %s vs. %s\n",
+ $native_support,
+ var_export($explain, true),
+ var_export($explain_native, true));
+
+ $stmt->execute();
+ $stmt->execute();
+ // libmysql needs this - otherwise we get a 2015 error
+ if (!MYSQLPDOTest::isPDOMySQLnd())
+ $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
+
+ print "done!\n";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_fetch_serialize.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_fetch_serialize.phpt
index d0a889a6d4..d1c00f1aa3 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_fetch_serialize.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_fetch_serialize.phpt
@@ -8,110 +8,110 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- try {
-
- class myclass implements Serializable {
-
- private static $instance = null;
- protected $myprotected = 'a protected property';
-
- // Good old magic stuff
- private function __construct($caller = NULL) {
- printf("%s(%s)\n", __METHOD__, $caller);
- }
-
-
- public function __destruct() {
- // printf("%s()\n", __METHOD__);
- }
-
- public function __sleep() {
- printf("%s()\n", __METHOD__);
- }
-
- public function __wakeup() {
- printf("%s()\n", __METHOD__);
- }
-
- public function __call($method, $params) {
- printf("%s(%s, %s)\n", __METHOD__, $method, var_export($params, true));
- }
-
- public function __set($prop, $value) {
- printf("%s(%s, %s)\n", __METHOD__, $prop, var_export($value, true));
- $this->{$prop} = $value;
- }
-
- public function __get($prop) {
- printf("%s(%s)\n", __METHOD__, $prop);
- return NULL;
- }
-
- // Singleton
- public static function singleton($caller) {
- printf("%s(%s)\n", __METHOD__, $caller);
-
- if (!self::$instance) {
- $c = __CLASS__;
- self::$instance = new $c($caller);
- }
- return self::$instance;
- }
-
- // Serializable
- public function serialize() {
- printf("%s()\n", __METHOD__);
- return 'Data from serialize';
- }
-
- public function unserialize($data) {
- printf("%s(%s)\n", __METHOD__, var_export($data, true));
- }
-
- }
-
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[002] Unable to turn off emulated prepared statements\n");
-
- $db->exec('DROP TABLE IF EXISTS test');
- $db->exec(sprintf('CREATE TABLE test(id INT, myobj BLOB) ENGINE=%s',
- MySQLPDOTest::getTableEngine()));
-
- printf("Creating an object, serializing it and writing it to DB...\n");
- $id = 1;
- $obj = myclass::singleton('Creating object');
- $myobj = serialize($obj);
- $stmt = $db->prepare('INSERT INTO test(id, myobj) VALUES (?, ?)');
- $stmt->bindValue(1, $id);
- $stmt->bindValue(2, $myobj);
- $stmt->execute();
-
- printf("\nUnserializing the previously serialized object...\n");
- var_dump(unserialize($myobj));
-
- printf("\nUsing PDO::FETCH_CLASS|PDO::FETCH_SERIALIZE to fetch the object from DB and unserialize it...\n");
- $stmt = $db->prepare('SELECT myobj FROM test');
- $stmt->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_SERIALIZE, 'myclass', array('PDO shall not call __construct()'));
- $stmt->execute();
- var_dump($stmt->fetch());
-
- printf("\nUsing PDO::FETCH_CLASS to fetch the object from DB and unserialize it...\n");
- $stmt = $db->prepare('SELECT myobj FROM test');
- $stmt->setFetchMode(PDO::FETCH_CLASS, 'myclass', array('PDO shall call __construct()'));
- $stmt->execute();
- var_dump($stmt->fetch());
-
-
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ try {
+
+ class myclass implements Serializable {
+
+ private static $instance = null;
+ protected $myprotected = 'a protected property';
+
+ // Good old magic stuff
+ private function __construct($caller = NULL) {
+ printf("%s(%s)\n", __METHOD__, $caller);
+ }
+
+
+ public function __destruct() {
+ // printf("%s()\n", __METHOD__);
+ }
+
+ public function __sleep() {
+ printf("%s()\n", __METHOD__);
+ }
+
+ public function __wakeup() {
+ printf("%s()\n", __METHOD__);
+ }
+
+ public function __call($method, $params) {
+ printf("%s(%s, %s)\n", __METHOD__, $method, var_export($params, true));
+ }
+
+ public function __set($prop, $value) {
+ printf("%s(%s, %s)\n", __METHOD__, $prop, var_export($value, true));
+ $this->{$prop} = $value;
+ }
+
+ public function __get($prop) {
+ printf("%s(%s)\n", __METHOD__, $prop);
+ return NULL;
+ }
+
+ // Singleton
+ public static function singleton($caller) {
+ printf("%s(%s)\n", __METHOD__, $caller);
+
+ if (!self::$instance) {
+ $c = __CLASS__;
+ self::$instance = new $c($caller);
+ }
+ return self::$instance;
+ }
+
+ // Serializable
+ public function serialize() {
+ printf("%s()\n", __METHOD__);
+ return 'Data from serialize';
+ }
+
+ public function unserialize($data) {
+ printf("%s(%s)\n", __METHOD__, var_export($data, true));
+ }
+
+ }
+
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[002] Unable to turn off emulated prepared statements\n");
+
+ $db->exec('DROP TABLE IF EXISTS test');
+ $db->exec(sprintf('CREATE TABLE test(id INT, myobj BLOB) ENGINE=%s',
+ MySQLPDOTest::getTableEngine()));
+
+ printf("Creating an object, serializing it and writing it to DB...\n");
+ $id = 1;
+ $obj = myclass::singleton('Creating object');
+ $myobj = serialize($obj);
+ $stmt = $db->prepare('INSERT INTO test(id, myobj) VALUES (?, ?)');
+ $stmt->bindValue(1, $id);
+ $stmt->bindValue(2, $myobj);
+ $stmt->execute();
+
+ printf("\nUnserializing the previously serialized object...\n");
+ var_dump(unserialize($myobj));
+
+ printf("\nUsing PDO::FETCH_CLASS|PDO::FETCH_SERIALIZE to fetch the object from DB and unserialize it...\n");
+ $stmt = $db->prepare('SELECT myobj FROM test');
+ $stmt->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_SERIALIZE, 'myclass', array('PDO shall not call __construct()'));
+ $stmt->execute();
+ var_dump($stmt->fetch());
+
+ printf("\nUsing PDO::FETCH_CLASS to fetch the object from DB and unserialize it...\n");
+ $stmt = $db->prepare('SELECT myobj FROM test');
+ $stmt->setFetchMode(PDO::FETCH_CLASS, 'myclass', array('PDO shall call __construct()'));
+ $stmt->execute();
+ var_dump($stmt->fetch());
+
+
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- print "done!\n";
+ print "done!\n";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_fetch_serialize_simple.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_fetch_serialize_simple.phpt
index bfc907dbcb..07c9205796 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_fetch_serialize_simple.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_fetch_serialize_simple.phpt
@@ -8,65 +8,65 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
- try {
+ try {
- class myclass implements Serializable {
+ class myclass implements Serializable {
- public function __construct($caller = null) {
- printf("%s(%s) - note that it must not be called when unserializing\n", __METHOD__, var_export($caller, true));
- }
+ public function __construct($caller = null) {
+ printf("%s(%s) - note that it must not be called when unserializing\n", __METHOD__, var_export($caller, true));
+ }
- public function __set($prop, $value) {
- printf("%s(%s, %s)\n", __METHOD__, var_export($prop, true), var_export($value, true));
- $this->{$prop} = $value;
- }
+ public function __set($prop, $value) {
+ printf("%s(%s, %s)\n", __METHOD__, var_export($prop, true), var_export($value, true));
+ $this->{$prop} = $value;
+ }
- public function serialize() {
- printf("%s()\n", __METHOD__);
- return 'Value from serialize()';
- }
+ public function serialize() {
+ printf("%s()\n", __METHOD__);
+ return 'Value from serialize()';
+ }
- public function unserialize($data) {
- printf("%s(%s)\n", __METHOD__, var_export($data, true));
- }
+ public function unserialize($data) {
+ printf("%s(%s)\n", __METHOD__, var_export($data, true));
+ }
- }
+ }
- printf("Lets see what the Serializeable interface makes our object behave like...\n");
- $obj = new myclass('Called by script');
- $tmp = unserialize(serialize($obj));
- var_dump($tmp);
+ printf("Lets see what the Serializeable interface makes our object behave like...\n");
+ $obj = new myclass('Called by script');
+ $tmp = unserialize(serialize($obj));
+ var_dump($tmp);
- printf("\nAnd now magic PDO using fetchAll(PDO::FETCH_CLASS|PDO::FETCH_SERIALIZE)...\n");
- $db->exec('DROP TABLE IF EXISTS test');
- $db->exec(sprintf('CREATE TABLE test(myobj BLOB) ENGINE=%s', MySQLPDOTest::getTableEngine()));
- $db->exec("INSERT INTO test(myobj) VALUES ('Data fetched from DB to be given to unserialize()')");
+ printf("\nAnd now magic PDO using fetchAll(PDO::FETCH_CLASS|PDO::FETCH_SERIALIZE)...\n");
+ $db->exec('DROP TABLE IF EXISTS test');
+ $db->exec(sprintf('CREATE TABLE test(myobj BLOB) ENGINE=%s', MySQLPDOTest::getTableEngine()));
+ $db->exec("INSERT INTO test(myobj) VALUES ('Data fetched from DB to be given to unserialize()')");
- $stmt = $db->prepare('SELECT myobj FROM test');
- $stmt->execute();
- $rows = $stmt->fetchAll(PDO::FETCH_CLASS|PDO::FETCH_SERIALIZE, 'myclass', array('Called by PDO'));
- var_dump($rows[0]);
+ $stmt = $db->prepare('SELECT myobj FROM test');
+ $stmt->execute();
+ $rows = $stmt->fetchAll(PDO::FETCH_CLASS|PDO::FETCH_SERIALIZE, 'myclass', array('Called by PDO'));
+ var_dump($rows[0]);
- $stmt->execute();
- $rows = $stmt->fetchAll(PDO::FETCH_CLASS|PDO::FETCH_SERIALIZE, 'myclass');
- var_dump($rows[0]);
+ $stmt->execute();
+ $rows = $stmt->fetchAll(PDO::FETCH_CLASS|PDO::FETCH_SERIALIZE, 'myclass');
+ var_dump($rows[0]);
- printf("\nAnd now PDO using setFetchMode(PDO::FETCH:CLASS|PDO::FETCH_SERIALIZE) + fetch()...\n");
- $stmt = $db->prepare('SELECT myobj FROM test');
- $stmt->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_SERIALIZE, 'myclass', array('Called by PDO'));
- $stmt->execute();
- var_dump($stmt->fetch());
+ printf("\nAnd now PDO using setFetchMode(PDO::FETCH:CLASS|PDO::FETCH_SERIALIZE) + fetch()...\n");
+ $stmt = $db->prepare('SELECT myobj FROM test');
+ $stmt->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_SERIALIZE, 'myclass', array('Called by PDO'));
+ $stmt->execute();
+ var_dump($stmt->fetch());
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- $db->exec('DROP TABLE IF EXISTS test');
- print "done!\n";
+ $db->exec('DROP TABLE IF EXISTS test');
+ print "done!\n";
?>
--EXPECTF--
Lets see what the Serializeable interface makes our object behave like...
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_fetchobject.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_fetchobject.phpt
index ae14c056f3..9760682358 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_fetchobject.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_fetchobject.phpt
@@ -25,52 +25,52 @@ MySQLPDOTest::createTestTable($db);
try {
- $query = "SELECT id, '', NULL, \"\" FROM test ORDER BY id ASC LIMIT 3";
- $stmt = $db->prepare($query);
+ $query = "SELECT id, '', NULL, \"\" FROM test ORDER BY id ASC LIMIT 3";
+ $stmt = $db->prepare($query);
- class myclass {
+ class myclass {
- private $set_calls = 0;
- protected static $static_set_calls = 0;
+ private $set_calls = 0;
+ protected static $static_set_calls = 0;
- // NOTE: PDO does not care about protected
- protected $grp;
+ // NOTE: PDO does not care about protected
+ protected $grp;
- // NOTE: PDO does not care about private and calls __construct() after __set()
- private function __construct($param1, $param2) {
- printf("myclass::__construct(%s, %s): %d / %d\n",
- $param1, $param2,
- self::$static_set_calls, $this->set_calls);
- }
+ // NOTE: PDO does not care about private and calls __construct() after __set()
+ private function __construct($param1, $param2) {
+ printf("myclass::__construct(%s, %s): %d / %d\n",
+ $param1, $param2,
+ self::$static_set_calls, $this->set_calls);
+ }
- // NOTE: PDO will call __set() prior to calling __construct()
- public function __set($prop, $value) {
- $this->not_a_magic_one();
- printf("myclass::__set(%s, -%s-) %d\n",
- $prop, var_export($value, true), $this->set_calls, self::$static_set_calls);
- if ("" != $prop)
- $this->{$prop} = $value;
- }
+ // NOTE: PDO will call __set() prior to calling __construct()
+ public function __set($prop, $value) {
+ $this->not_a_magic_one();
+ printf("myclass::__set(%s, -%s-) %d\n",
+ $prop, var_export($value, true), $this->set_calls, self::$static_set_calls);
+ if ("" != $prop)
+ $this->{$prop} = $value;
+ }
- // NOTE: PDO can call regular methods prior to calling __construct()
- public function not_a_magic_one() {
- $this->set_calls++;
- self::$static_set_calls++;
- }
+ // NOTE: PDO can call regular methods prior to calling __construct()
+ public function not_a_magic_one() {
+ $this->set_calls++;
+ self::$static_set_calls++;
+ }
- }
- $stmt->execute();
- $rowno = 0;
- $rows[] = array();
- while (is_object($rows[] = $stmt->fetchObject('myclass', array($rowno++, $rowno))))
- ;
+ }
+ $stmt->execute();
+ $rowno = 0;
+ $rows[] = array();
+ while (is_object($rows[] = $stmt->fetchObject('myclass', array($rowno++, $rowno))))
+ ;
- var_dump($rows[$rowno - 1]);
+ var_dump($rows[$rowno - 1]);
} catch (PDOException $e) {
- // we should never get here, we use warnings, but never trust a system...
- printf("[001] %s, [%s} %s\n",
- $e->getMessage(), $db->errorInfo(), implode(' ', $db->errorInfo()));
+ // we should never get here, we use warnings, but never trust a system...
+ printf("[001] %s, [%s} %s\n",
+ $e->getMessage(), $db->errorInfo(), implode(' ', $db->errorInfo()));
}
print "done!";
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_getcolumnmeta.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_getcolumnmeta.phpt
index 5ac683ea48..3526b35c24 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_getcolumnmeta.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_getcolumnmeta.phpt
@@ -22,277 +22,277 @@ MySQLPDOTest::createTestTable($db);
try {
- $stmt = $db->prepare('SELECT id FROM test ORDER BY id ASC');
-
- // execute() has not been called yet
- // NOTE: no warning
- if (false !== ($tmp = $stmt->getColumnMeta(0)))
- printf("[002] Expecting false got %s\n", var_export($tmp, true));
-
- $stmt->execute();
-
- // invalid offset
- if (false !== ($tmp = @$stmt->getColumnMeta(-1)))
- printf("[004] Expecting false got %s\n", var_export($tmp, true));
-
- $emulated = $stmt->getColumnMeta(0);
-
- printf("Testing native PS...\n");
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[007] Unable to turn off emulated prepared statements\n");
-
- $stmt = $db->prepare('SELECT id FROM test ORDER BY id ASC');
- $stmt->execute();
- $native = $stmt->getColumnMeta(0);
- if (count($native) == 0) {
- printf("[008] Meta data seems wrong, %s / %s\n",
- var_export($native, true), var_export($emulated, true));
- }
-
- // invalid offset
- if (false !== ($tmp = $stmt->getColumnMeta(1)))
- printf("[009] Expecting false because of invalid offset got %s\n", var_export($tmp, true));
-
-
- function test_meta(&$db, $offset, $sql_type, $value, $native_type, $pdo_type) {
-
- $db->exec('DROP TABLE IF EXISTS test');
-
- $sql = sprintf('CREATE TABLE test(id INT, label %s) ENGINE=%s', $sql_type, MySQLPDOTest::getTableEngine());
- if (!($stmt = @$db->prepare($sql)) || (!@$stmt->execute())) {
- // Some engines and/or MySQL server versions might not support the data type
- return true;
- }
-
- if (!$db->exec(sprintf("INSERT INTO test(id, label) VALUES (1, '%s')", $value))) {
- printf("[%03d] + 1] Insert failed, %d - %s\n", $offset,
- $db->errorCode(), var_export($db->errorInfo(), true));
- return false;
- }
-
- $stmt = $db->prepare('SELECT id, label FROM test');
- $stmt->execute();
- $meta = $stmt->getColumnMeta(1);
- $row = $stmt->fetch(PDO::FETCH_ASSOC);
-
- if (empty($meta)) {
- printf("[%03d + 2] getColumnMeta() failed, %d - %s\n", $offset,
- $stmt->errorCode(), var_export($stmt->errorInfo(), true));
- return false;
- }
-
- $elements = array('flags', 'table', 'name', 'len', 'precision', 'pdo_type');
- foreach ($elements as $k => $element)
- if (!isset($meta[$element])) {
- printf("[%03d + 3] Element %s missing, %s\n", $offset,
- $element, var_export($meta, true));
- return false;
- }
-
- if (($meta['table'] != 'test') || ($meta['name'] != 'label')) {
- printf("[%03d + 4] Table or field name is wrong, %s\n", $offset,
- var_export($meta, true));
- return false;
- }
-
- if (!is_null($native_type)) {
- if (!isset($meta['native_type'])) {
- printf("[%03d + 5] Element native_type missing, %s\n", $offset,
- var_export($meta, true));
- return false;
- }
-
- if (!is_array($native_type))
- $native_type = array($native_type);
-
- $found = false;
- foreach ($native_type as $k => $type) {
- if ($meta['native_type'] == $type) {
- $found = true;
- break;
- }
- }
-
- if (!$found) {
- printf("[%03d + 6] Expecting native type %s, %s\n", $offset,
- var_export($native_type, true), var_export($meta, true));
- return false;
- }
- }
-
- if (!is_null($pdo_type) && ($meta['pdo_type'] != $pdo_type)) {
- printf("[%03d + 6] Expecting PDO type %s got %s (%s)\n", $offset,
- $pdo_type, var_export($meta, true), var_export($meta['native_type']));
- return false;
- }
-
- return true;
- }
-
- $stmt = $db->prepare('SELECT @@sql_mode AS _mode');
- $stmt->execute();
- $row = $stmt->fetch(PDO::FETCH_ASSOC);
- $real_as_float = (false === stristr($row['_mode'], "REAL_AS_FLOAT")) ? false : true;
-
- $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
- $is_mysqlnd = MySQLPDOTest::isPDOMySQLnd();
- test_meta($db, 20, 'BIT(8)', 1, 'BIT', ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
- test_meta($db, 30, 'TINYINT', -127, 'TINY', ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
- test_meta($db, 40, 'TINYINT UNSIGNED', 255, 'TINY', ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
- test_meta($db, 50, 'BOOLEAN', 1, NULL, ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
-
- test_meta($db, 60, 'SMALLINT', -32768, 'SHORT', ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
- test_meta($db, 70, 'SMALLINT UNSIGNED', 65535, 'SHORT', ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
-
- test_meta($db, 80, 'MEDIUMINT', -8388608, 'INT24', ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
- test_meta($db, 90, 'MEDIUMINT UNSIGNED', 16777215, 'INT24', ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
-
- test_meta($db, 100, 'INT', -2147483648, 'LONG', ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
- test_meta($db, 110, 'INT UNSIGNED', 4294967295, 'LONG', ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
-
- test_meta($db, 120, 'BIGINT', '-9223372036854775808', 'LONGLONG', ($is_mysqlnd) ? ((PHP_INT_SIZE == 4) ? PDO::PARAM_STR : PDO::PARAM_INT) : PDO::PARAM_STR);
- test_meta($db, 130, 'BIGINT UNSIGNED', '18446744073709551615', 'LONGLONG', ($is_mysqlnd) ? ((PHP_INT_SIZE == 4) ? PDO::PARAM_STR : PDO::PARAM_INT) : PDO::PARAM_STR);
-
- test_meta($db, 130, 'REAL', -1.01, ($real_as_float) ? 'FLOAT' : 'DOUBLE', PDO::PARAM_STR);
- test_meta($db, 140, 'REAL UNSIGNED', 1.01, ($real_as_float) ? 'FLOAT' : 'DOUBLE', PDO::PARAM_STR);
- test_meta($db, 150, 'REAL ZEROFILL', 1.01, ($real_as_float) ? 'FLOAT' : 'DOUBLE', PDO::PARAM_STR);
- test_meta($db, 160, 'REAL UNSIGNED ZEROFILL', 1.01, ($real_as_float) ? 'FLOAT' : 'DOUBLE', PDO::PARAM_STR);
-
- test_meta($db, 170, 'DOUBLE', -1.01, 'DOUBLE', PDO::PARAM_STR);
- test_meta($db, 180, 'DOUBLE UNSIGNED', 1.01, 'DOUBLE', PDO::PARAM_STR);
- test_meta($db, 190, 'DOUBLE ZEROFILL', 1.01, 'DOUBLE', PDO::PARAM_STR);
- test_meta($db, 200, 'DOUBLE UNSIGNED ZEROFILL', 1.01, 'DOUBLE', PDO::PARAM_STR);
-
- test_meta($db, 210, 'FLOAT', -1.01, 'FLOAT', PDO::PARAM_STR);
- test_meta($db, 220, 'FLOAT UNSIGNED', 1.01, 'FLOAT', PDO::PARAM_STR);
- test_meta($db, 230, 'FLOAT ZEROFILL', 1.01, 'FLOAT', PDO::PARAM_STR);
- test_meta($db, 240, 'FLOAT UNSIGNED ZEROFILL', 1.01, 'FLOAT', PDO::PARAM_STR);
-
- test_meta($db, 250, 'DECIMAL', -1.01, array('DECIMAL', 'NEWDECIMAL'), PDO::PARAM_STR);
- test_meta($db, 260, 'DECIMAL UNSIGNED', 1.01, array('DECIMAL', 'NEWDECIMAL'), PDO::PARAM_STR);
- test_meta($db, 270, 'DECIMAL ZEROFILL', 1.01, array('DECIMAL', 'NEWDECIMAL'), PDO::PARAM_STR);
- test_meta($db, 280, 'DECIMAL UNSIGNED ZEROFILL', 1.01, array('DECIMAL', 'NEWDECIMAL'), PDO::PARAM_STR);
-
- test_meta($db, 290, 'NUMERIC', -1.01, array('DECIMAL', 'NEWDECIMAL'), PDO::PARAM_STR);
- test_meta($db, 300, 'NUMERIC UNSIGNED', 1.01, array('DECIMAL', 'NEWDECIMAL'), PDO::PARAM_STR);
- test_meta($db, 310, 'NUMERIC ZEROFILL', 1.01, array('DECIMAL', 'NEWDECIMAL'), PDO::PARAM_STR);
- test_meta($db, 320, 'NUMERIC UNSIGNED ZEROFILL', 1.01, array('DECIMAL', 'NEWDECIMAL'), PDO::PARAM_STR);
-
- test_meta($db, 330, 'DATE', '2008-04-23', array('DATE', 'NEWDATE'), PDO::PARAM_STR);
- test_meta($db, 340, 'TIME', '14:37:00', 'TIME', PDO::PARAM_STR);
- test_meta($db, 350, 'TIMESTAMP', '2008-03-23 14:38:00', 'TIMESTAMP', PDO::PARAM_STR);
- test_meta($db, 360, 'DATETIME', '2008-03-23 14:38:00', 'DATETIME', PDO::PARAM_STR);
- test_meta($db, 370, 'YEAR', '2008', 'YEAR', ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
-
- test_meta($db, 380, 'CHAR(1)', 'a', 'STRING', PDO::PARAM_STR);
- test_meta($db, 390, 'CHAR(10)', '0123456789', 'STRING', PDO::PARAM_STR);
- test_meta($db, 400, 'CHAR(255)', str_repeat('z', 255), 'STRING', PDO::PARAM_STR);
- test_meta($db, 410, 'VARCHAR(1)', 'a', 'VAR_STRING', PDO::PARAM_STR);
- test_meta($db, 420, 'VARCHAR(10)', '0123456789', 'VAR_STRING', PDO::PARAM_STR);
- test_meta($db, 430, 'VARCHAR(255)', str_repeat('z', 255), 'VAR_STRING', PDO::PARAM_STR);
-
- test_meta($db, 440, 'BINARY(1)', str_repeat('a', 1), 'STRING', PDO::PARAM_STR);
- test_meta($db, 450, 'BINARY(255)', str_repeat('b', 255), 'STRING', PDO::PARAM_STR);
- test_meta($db, 460, 'VARBINARY(1)', str_repeat('a', 1), 'VAR_STRING', PDO::PARAM_STR);
- test_meta($db, 470, 'VARBINARY(255)', str_repeat('b', 255), 'VAR_STRING', PDO::PARAM_STR);
-
- test_meta($db, 480, 'TINYBLOB', str_repeat('b', 255), 'BLOB', PDO::PARAM_STR);
- test_meta($db, 490, 'BLOB', str_repeat('b', 256), 'BLOB', PDO::PARAM_STR);
- test_meta($db, 500, 'MEDIUMBLOB', str_repeat('b', 256), 'BLOB', PDO::PARAM_STR);
- test_meta($db, 510, 'LONGBLOB', str_repeat('b', 256), 'BLOB', PDO::PARAM_STR);
-
- test_meta($db, 520, 'TINYTEXT', str_repeat('b', 255), 'BLOB', PDO::PARAM_STR);
- test_meta($db, 530, 'TINYTEXT BINARY', str_repeat('b', 255), 'BLOB', PDO::PARAM_STR);
-
- test_meta($db, 560, 'TEXT', str_repeat('b', 256), 'BLOB', PDO::PARAM_STR);
- test_meta($db, 570, 'TEXT BINARY', str_repeat('b', 256), 'BLOB', PDO::PARAM_STR);
-
- test_meta($db, 580, 'MEDIUMTEXT', str_repeat('b', 256), 'BLOB', PDO::PARAM_STR);
- test_meta($db, 590, 'MEDIUMTEXT BINARY', str_repeat('b', 256), 'BLOB', PDO::PARAM_STR);
-
- test_meta($db, 600, 'LONGTEXT', str_repeat('b', 256), 'BLOB', PDO::PARAM_STR);
- test_meta($db, 610, 'LONGTEXT BINARY', str_repeat('b', 256), 'BLOB', PDO::PARAM_STR);
-
- test_meta($db, 620, "ENUM('yes', 'no') DEFAULT 'yes'", 'no', NULL, PDO::PARAM_STR);
- test_meta($db, 630, "SET('yes', 'no') DEFAULT 'yes'", 'no', NULL, PDO::PARAM_STR);
+ $stmt = $db->prepare('SELECT id FROM test ORDER BY id ASC');
+
+ // execute() has not been called yet
+ // NOTE: no warning
+ if (false !== ($tmp = $stmt->getColumnMeta(0)))
+ printf("[002] Expecting false got %s\n", var_export($tmp, true));
+
+ $stmt->execute();
+
+ // invalid offset
+ if (false !== ($tmp = @$stmt->getColumnMeta(-1)))
+ printf("[004] Expecting false got %s\n", var_export($tmp, true));
+
+ $emulated = $stmt->getColumnMeta(0);
+
+ printf("Testing native PS...\n");
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[007] Unable to turn off emulated prepared statements\n");
+
+ $stmt = $db->prepare('SELECT id FROM test ORDER BY id ASC');
+ $stmt->execute();
+ $native = $stmt->getColumnMeta(0);
+ if (count($native) == 0) {
+ printf("[008] Meta data seems wrong, %s / %s\n",
+ var_export($native, true), var_export($emulated, true));
+ }
+
+ // invalid offset
+ if (false !== ($tmp = $stmt->getColumnMeta(1)))
+ printf("[009] Expecting false because of invalid offset got %s\n", var_export($tmp, true));
+
+
+ function test_meta(&$db, $offset, $sql_type, $value, $native_type, $pdo_type) {
+
+ $db->exec('DROP TABLE IF EXISTS test');
+
+ $sql = sprintf('CREATE TABLE test(id INT, label %s) ENGINE=%s', $sql_type, MySQLPDOTest::getTableEngine());
+ if (!($stmt = @$db->prepare($sql)) || (!@$stmt->execute())) {
+ // Some engines and/or MySQL server versions might not support the data type
+ return true;
+ }
+
+ if (!$db->exec(sprintf("INSERT INTO test(id, label) VALUES (1, '%s')", $value))) {
+ printf("[%03d] + 1] Insert failed, %d - %s\n", $offset,
+ $db->errorCode(), var_export($db->errorInfo(), true));
+ return false;
+ }
+
+ $stmt = $db->prepare('SELECT id, label FROM test');
+ $stmt->execute();
+ $meta = $stmt->getColumnMeta(1);
+ $row = $stmt->fetch(PDO::FETCH_ASSOC);
+
+ if (empty($meta)) {
+ printf("[%03d + 2] getColumnMeta() failed, %d - %s\n", $offset,
+ $stmt->errorCode(), var_export($stmt->errorInfo(), true));
+ return false;
+ }
+
+ $elements = array('flags', 'table', 'name', 'len', 'precision', 'pdo_type');
+ foreach ($elements as $k => $element)
+ if (!isset($meta[$element])) {
+ printf("[%03d + 3] Element %s missing, %s\n", $offset,
+ $element, var_export($meta, true));
+ return false;
+ }
+
+ if (($meta['table'] != 'test') || ($meta['name'] != 'label')) {
+ printf("[%03d + 4] Table or field name is wrong, %s\n", $offset,
+ var_export($meta, true));
+ return false;
+ }
+
+ if (!is_null($native_type)) {
+ if (!isset($meta['native_type'])) {
+ printf("[%03d + 5] Element native_type missing, %s\n", $offset,
+ var_export($meta, true));
+ return false;
+ }
+
+ if (!is_array($native_type))
+ $native_type = array($native_type);
+
+ $found = false;
+ foreach ($native_type as $k => $type) {
+ if ($meta['native_type'] == $type) {
+ $found = true;
+ break;
+ }
+ }
+
+ if (!$found) {
+ printf("[%03d + 6] Expecting native type %s, %s\n", $offset,
+ var_export($native_type, true), var_export($meta, true));
+ return false;
+ }
+ }
+
+ if (!is_null($pdo_type) && ($meta['pdo_type'] != $pdo_type)) {
+ printf("[%03d + 6] Expecting PDO type %s got %s (%s)\n", $offset,
+ $pdo_type, var_export($meta, true), var_export($meta['native_type']));
+ return false;
+ }
+
+ return true;
+ }
+
+ $stmt = $db->prepare('SELECT @@sql_mode AS _mode');
+ $stmt->execute();
+ $row = $stmt->fetch(PDO::FETCH_ASSOC);
+ $real_as_float = (false === stristr($row['_mode'], "REAL_AS_FLOAT")) ? false : true;
+
+ $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
+ $is_mysqlnd = MySQLPDOTest::isPDOMySQLnd();
+ test_meta($db, 20, 'BIT(8)', 1, 'BIT', ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
+ test_meta($db, 30, 'TINYINT', -127, 'TINY', ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
+ test_meta($db, 40, 'TINYINT UNSIGNED', 255, 'TINY', ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
+ test_meta($db, 50, 'BOOLEAN', 1, NULL, ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
+
+ test_meta($db, 60, 'SMALLINT', -32768, 'SHORT', ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
+ test_meta($db, 70, 'SMALLINT UNSIGNED', 65535, 'SHORT', ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
+
+ test_meta($db, 80, 'MEDIUMINT', -8388608, 'INT24', ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
+ test_meta($db, 90, 'MEDIUMINT UNSIGNED', 16777215, 'INT24', ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
+
+ test_meta($db, 100, 'INT', -2147483648, 'LONG', ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
+ test_meta($db, 110, 'INT UNSIGNED', 4294967295, 'LONG', ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
+
+ test_meta($db, 120, 'BIGINT', '-9223372036854775808', 'LONGLONG', ($is_mysqlnd) ? ((PHP_INT_SIZE == 4) ? PDO::PARAM_STR : PDO::PARAM_INT) : PDO::PARAM_STR);
+ test_meta($db, 130, 'BIGINT UNSIGNED', '18446744073709551615', 'LONGLONG', ($is_mysqlnd) ? ((PHP_INT_SIZE == 4) ? PDO::PARAM_STR : PDO::PARAM_INT) : PDO::PARAM_STR);
+
+ test_meta($db, 130, 'REAL', -1.01, ($real_as_float) ? 'FLOAT' : 'DOUBLE', PDO::PARAM_STR);
+ test_meta($db, 140, 'REAL UNSIGNED', 1.01, ($real_as_float) ? 'FLOAT' : 'DOUBLE', PDO::PARAM_STR);
+ test_meta($db, 150, 'REAL ZEROFILL', 1.01, ($real_as_float) ? 'FLOAT' : 'DOUBLE', PDO::PARAM_STR);
+ test_meta($db, 160, 'REAL UNSIGNED ZEROFILL', 1.01, ($real_as_float) ? 'FLOAT' : 'DOUBLE', PDO::PARAM_STR);
+
+ test_meta($db, 170, 'DOUBLE', -1.01, 'DOUBLE', PDO::PARAM_STR);
+ test_meta($db, 180, 'DOUBLE UNSIGNED', 1.01, 'DOUBLE', PDO::PARAM_STR);
+ test_meta($db, 190, 'DOUBLE ZEROFILL', 1.01, 'DOUBLE', PDO::PARAM_STR);
+ test_meta($db, 200, 'DOUBLE UNSIGNED ZEROFILL', 1.01, 'DOUBLE', PDO::PARAM_STR);
+
+ test_meta($db, 210, 'FLOAT', -1.01, 'FLOAT', PDO::PARAM_STR);
+ test_meta($db, 220, 'FLOAT UNSIGNED', 1.01, 'FLOAT', PDO::PARAM_STR);
+ test_meta($db, 230, 'FLOAT ZEROFILL', 1.01, 'FLOAT', PDO::PARAM_STR);
+ test_meta($db, 240, 'FLOAT UNSIGNED ZEROFILL', 1.01, 'FLOAT', PDO::PARAM_STR);
+
+ test_meta($db, 250, 'DECIMAL', -1.01, array('DECIMAL', 'NEWDECIMAL'), PDO::PARAM_STR);
+ test_meta($db, 260, 'DECIMAL UNSIGNED', 1.01, array('DECIMAL', 'NEWDECIMAL'), PDO::PARAM_STR);
+ test_meta($db, 270, 'DECIMAL ZEROFILL', 1.01, array('DECIMAL', 'NEWDECIMAL'), PDO::PARAM_STR);
+ test_meta($db, 280, 'DECIMAL UNSIGNED ZEROFILL', 1.01, array('DECIMAL', 'NEWDECIMAL'), PDO::PARAM_STR);
+
+ test_meta($db, 290, 'NUMERIC', -1.01, array('DECIMAL', 'NEWDECIMAL'), PDO::PARAM_STR);
+ test_meta($db, 300, 'NUMERIC UNSIGNED', 1.01, array('DECIMAL', 'NEWDECIMAL'), PDO::PARAM_STR);
+ test_meta($db, 310, 'NUMERIC ZEROFILL', 1.01, array('DECIMAL', 'NEWDECIMAL'), PDO::PARAM_STR);
+ test_meta($db, 320, 'NUMERIC UNSIGNED ZEROFILL', 1.01, array('DECIMAL', 'NEWDECIMAL'), PDO::PARAM_STR);
+
+ test_meta($db, 330, 'DATE', '2008-04-23', array('DATE', 'NEWDATE'), PDO::PARAM_STR);
+ test_meta($db, 340, 'TIME', '14:37:00', 'TIME', PDO::PARAM_STR);
+ test_meta($db, 350, 'TIMESTAMP', '2008-03-23 14:38:00', 'TIMESTAMP', PDO::PARAM_STR);
+ test_meta($db, 360, 'DATETIME', '2008-03-23 14:38:00', 'DATETIME', PDO::PARAM_STR);
+ test_meta($db, 370, 'YEAR', '2008', 'YEAR', ($is_mysqlnd) ? PDO::PARAM_INT : PDO::PARAM_STR);
+
+ test_meta($db, 380, 'CHAR(1)', 'a', 'STRING', PDO::PARAM_STR);
+ test_meta($db, 390, 'CHAR(10)', '0123456789', 'STRING', PDO::PARAM_STR);
+ test_meta($db, 400, 'CHAR(255)', str_repeat('z', 255), 'STRING', PDO::PARAM_STR);
+ test_meta($db, 410, 'VARCHAR(1)', 'a', 'VAR_STRING', PDO::PARAM_STR);
+ test_meta($db, 420, 'VARCHAR(10)', '0123456789', 'VAR_STRING', PDO::PARAM_STR);
+ test_meta($db, 430, 'VARCHAR(255)', str_repeat('z', 255), 'VAR_STRING', PDO::PARAM_STR);
+
+ test_meta($db, 440, 'BINARY(1)', str_repeat('a', 1), 'STRING', PDO::PARAM_STR);
+ test_meta($db, 450, 'BINARY(255)', str_repeat('b', 255), 'STRING', PDO::PARAM_STR);
+ test_meta($db, 460, 'VARBINARY(1)', str_repeat('a', 1), 'VAR_STRING', PDO::PARAM_STR);
+ test_meta($db, 470, 'VARBINARY(255)', str_repeat('b', 255), 'VAR_STRING', PDO::PARAM_STR);
+
+ test_meta($db, 480, 'TINYBLOB', str_repeat('b', 255), 'BLOB', PDO::PARAM_STR);
+ test_meta($db, 490, 'BLOB', str_repeat('b', 256), 'BLOB', PDO::PARAM_STR);
+ test_meta($db, 500, 'MEDIUMBLOB', str_repeat('b', 256), 'BLOB', PDO::PARAM_STR);
+ test_meta($db, 510, 'LONGBLOB', str_repeat('b', 256), 'BLOB', PDO::PARAM_STR);
+
+ test_meta($db, 520, 'TINYTEXT', str_repeat('b', 255), 'BLOB', PDO::PARAM_STR);
+ test_meta($db, 530, 'TINYTEXT BINARY', str_repeat('b', 255), 'BLOB', PDO::PARAM_STR);
+
+ test_meta($db, 560, 'TEXT', str_repeat('b', 256), 'BLOB', PDO::PARAM_STR);
+ test_meta($db, 570, 'TEXT BINARY', str_repeat('b', 256), 'BLOB', PDO::PARAM_STR);
+
+ test_meta($db, 580, 'MEDIUMTEXT', str_repeat('b', 256), 'BLOB', PDO::PARAM_STR);
+ test_meta($db, 590, 'MEDIUMTEXT BINARY', str_repeat('b', 256), 'BLOB', PDO::PARAM_STR);
+
+ test_meta($db, 600, 'LONGTEXT', str_repeat('b', 256), 'BLOB', PDO::PARAM_STR);
+ test_meta($db, 610, 'LONGTEXT BINARY', str_repeat('b', 256), 'BLOB', PDO::PARAM_STR);
+
+ test_meta($db, 620, "ENUM('yes', 'no') DEFAULT 'yes'", 'no', NULL, PDO::PARAM_STR);
+ test_meta($db, 630, "SET('yes', 'no') DEFAULT 'yes'", 'no', NULL, PDO::PARAM_STR);
/*
| spatial_type
*/
- // unique key
- $db->exec('DROP TABLE IF EXISTS test');
- $sql = sprintf('CREATE TABLE test(id INT, label INT UNIQUE) ENGINE = %s', MySQLPDOTest::getTableEngine());
- if (($stmt = @$db->prepare($sql)) && @$stmt->execute()) {
- $db->exec('INSERT INTO test(id, label) VALUES (1, 2)');
- $stmt = $db->query('SELECT id, label FROM test');
- $meta = $stmt->getColumnMeta(1);
- if (!isset($meta['flags'])) {
- printf("[1000] No flags contained in metadata %s\n", var_export($meta, true));
- } else {
- $flags = $meta['flags'];
- $found = false;
- foreach ($flags as $k => $flag) {
- if ($flag == 'unique_key')
- $found = true;
- }
- if (!$found)
- printf("[1001] Flags seem wrong %s\n", var_export($meta, true));
- }
- }
-
- // primary key
- $db->exec('DROP TABLE IF EXISTS test');
- $sql = sprintf('CREATE TABLE test(id INT PRIMARY KEY NOT NULL AUTO_INCREMENT) ENGINE = %s', MySQLPDOTest::getTableEngine());
- if (($stmt = @$db->prepare($sql)) && @$stmt->execute()) {
- $db->exec('INSERT INTO test(id) VALUES (1)');
- $stmt = $db->query('SELECT id FROM test');
- $meta = $stmt->getColumnMeta(0);
- if (!isset($meta['flags'])) {
- printf("[1002] No flags contained in metadata %s\n", var_export($meta, true));
- } else {
- $flags = $meta['flags'];
- $found = false;
- foreach ($flags as $k => $flag) {
- if ($flag == 'primary_key')
- $found = true;
- }
- if (!$found)
- printf("[1003] Flags seem wrong %s\n", var_export($meta, true));
- }
- }
-
- // multiple key
- $db->exec('DROP TABLE IF EXISTS test');
- $sql = sprintf('CREATE TABLE test(id INT, label1 INT, label2 INT, INDEX idx1(label1, label2)) ENGINE = %s', MySQLPDOTest::getTableEngine());
- if (($stmt = @$db->prepare($sql)) && @$stmt->execute()) {
- $db->exec('INSERT INTO test(id, label1, label2) VALUES (1, 2, 3)');
- $stmt = $db->query('SELECT id, label1, label2 FROM test');
- $meta = $stmt->getColumnMeta(1);
- if (!isset($meta['flags'])) {
- printf("[1004] No flags contained in metadata %s\n", var_export($meta, true));
- } else {
- $flags = $meta['flags'];
- $found = false;
- foreach ($flags as $k => $flag) {
- if ($flag == 'multiple_key')
- $found = true;
- }
- if (!$found)
- printf("[1005] Flags seem wrong %s\n", var_export($meta, true));
- }
- }
-
- $stmt = $db->query('SELECT NULL AS col1');
- $meta = $stmt->getColumnMeta(0);
- if ('NULL' !== $meta['native_type'])
- printf("[1006] Expecting NULL got %s\n", $meta['native_type']);
+ // unique key
+ $db->exec('DROP TABLE IF EXISTS test');
+ $sql = sprintf('CREATE TABLE test(id INT, label INT UNIQUE) ENGINE = %s', MySQLPDOTest::getTableEngine());
+ if (($stmt = @$db->prepare($sql)) && @$stmt->execute()) {
+ $db->exec('INSERT INTO test(id, label) VALUES (1, 2)');
+ $stmt = $db->query('SELECT id, label FROM test');
+ $meta = $stmt->getColumnMeta(1);
+ if (!isset($meta['flags'])) {
+ printf("[1000] No flags contained in metadata %s\n", var_export($meta, true));
+ } else {
+ $flags = $meta['flags'];
+ $found = false;
+ foreach ($flags as $k => $flag) {
+ if ($flag == 'unique_key')
+ $found = true;
+ }
+ if (!$found)
+ printf("[1001] Flags seem wrong %s\n", var_export($meta, true));
+ }
+ }
+
+ // primary key
+ $db->exec('DROP TABLE IF EXISTS test');
+ $sql = sprintf('CREATE TABLE test(id INT PRIMARY KEY NOT NULL AUTO_INCREMENT) ENGINE = %s', MySQLPDOTest::getTableEngine());
+ if (($stmt = @$db->prepare($sql)) && @$stmt->execute()) {
+ $db->exec('INSERT INTO test(id) VALUES (1)');
+ $stmt = $db->query('SELECT id FROM test');
+ $meta = $stmt->getColumnMeta(0);
+ if (!isset($meta['flags'])) {
+ printf("[1002] No flags contained in metadata %s\n", var_export($meta, true));
+ } else {
+ $flags = $meta['flags'];
+ $found = false;
+ foreach ($flags as $k => $flag) {
+ if ($flag == 'primary_key')
+ $found = true;
+ }
+ if (!$found)
+ printf("[1003] Flags seem wrong %s\n", var_export($meta, true));
+ }
+ }
+
+ // multiple key
+ $db->exec('DROP TABLE IF EXISTS test');
+ $sql = sprintf('CREATE TABLE test(id INT, label1 INT, label2 INT, INDEX idx1(label1, label2)) ENGINE = %s', MySQLPDOTest::getTableEngine());
+ if (($stmt = @$db->prepare($sql)) && @$stmt->execute()) {
+ $db->exec('INSERT INTO test(id, label1, label2) VALUES (1, 2, 3)');
+ $stmt = $db->query('SELECT id, label1, label2 FROM test');
+ $meta = $stmt->getColumnMeta(1);
+ if (!isset($meta['flags'])) {
+ printf("[1004] No flags contained in metadata %s\n", var_export($meta, true));
+ } else {
+ $flags = $meta['flags'];
+ $found = false;
+ foreach ($flags as $k => $flag) {
+ if ($flag == 'multiple_key')
+ $found = true;
+ }
+ if (!$found)
+ printf("[1005] Flags seem wrong %s\n", var_export($meta, true));
+ }
+ }
+
+ $stmt = $db->query('SELECT NULL AS col1');
+ $meta = $stmt->getColumnMeta(0);
+ if ('NULL' !== $meta['native_type'])
+ printf("[1006] Expecting NULL got %s\n", $meta['native_type']);
} catch (PDOException $e) {
- // we should never get here, we use warnings, but never trust a system...
- printf("[001] %s, [%s} %s\n",
- $e->getMessage(), $db->errorInfo(), implode(' ', $db->errorInfo()));
+ // we should never get here, we use warnings, but never trust a system...
+ printf("[001] %s, [%s} %s\n",
+ $e->getMessage(), $db->errorInfo(), implode(' ', $db->errorInfo()));
}
$db->exec('DROP TABLE IF EXISTS test');
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt
index 9e36714d54..7f4904d23b 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt
@@ -8,48 +8,48 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- function mysql_stmt_multiquery_wrong_usage($db) {
+ function mysql_stmt_multiquery_wrong_usage($db) {
- $stmt = $db->query('SELECT label FROM test ORDER BY id ASC LIMIT 1; SELECT label FROM test ORDER BY id ASC LIMIT 1');
- var_dump($stmt->errorInfo());
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- var_dump($stmt->errorInfo());
+ $stmt = $db->query('SELECT label FROM test ORDER BY id ASC LIMIT 1; SELECT label FROM test ORDER BY id ASC LIMIT 1');
+ var_dump($stmt->errorInfo());
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ var_dump($stmt->errorInfo());
- }
+ }
- function mysql_stmt_multiquery_proper_usage($db) {
+ function mysql_stmt_multiquery_proper_usage($db) {
- $stmt = $db->query('SELECT label FROM test ORDER BY id ASC LIMIT 1; SELECT label FROM test ORDER BY id ASC LIMIT 1');
- do {
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- } while ($stmt->nextRowset());
+ $stmt = $db->query('SELECT label FROM test ORDER BY id ASC LIMIT 1; SELECT label FROM test ORDER BY id ASC LIMIT 1');
+ do {
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ } while ($stmt->nextRowset());
- }
+ }
- try {
+ try {
- printf("Emulated Prepared Statements...\n");
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db);
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
- mysql_stmt_multiquery_wrong_usage($db);
- mysql_stmt_multiquery_proper_usage($db);
+ printf("Emulated Prepared Statements...\n");
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db);
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
+ mysql_stmt_multiquery_wrong_usage($db);
+ mysql_stmt_multiquery_proper_usage($db);
- printf("Native Prepared Statements...\n");
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db);
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
- mysql_stmt_multiquery_wrong_usage($db);
- mysql_stmt_multiquery_proper_usage($db);
+ printf("Native Prepared Statements...\n");
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db);
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
+ mysql_stmt_multiquery_wrong_usage($db);
+ mysql_stmt_multiquery_proper_usage($db);
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_nextrowset.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_nextrowset.phpt
index 9452ca8ec5..e473d6716e 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_nextrowset.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_nextrowset.phpt
@@ -23,90 +23,90 @@ if (!MySQLPDOTest::isPDOMySQLnd())
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
- MySQLPDOTest::createTestTable($db);
+ MySQLPDOTest::createTestTable($db);
- $stmt = $db->query('SELECT id FROM test');
- if (false !== ($tmp = $stmt->nextRowSet()))
- printf("[002] Expecting false got %s\n", var_export($tmp, true));
+ $stmt = $db->query('SELECT id FROM test');
+ if (false !== ($tmp = $stmt->nextRowSet()))
+ printf("[002] Expecting false got %s\n", var_export($tmp, true));
- // TODO: should give a warning, but its PDO, let's ignore the missing warning for now
- if (false !== ($tmp = $stmt->nextRowSet(1)))
- printf("[003] Expecting false got %s\n", var_export($tmp, true));
+ // TODO: should give a warning, but its PDO, let's ignore the missing warning for now
+ if (false !== ($tmp = $stmt->nextRowSet(1)))
+ printf("[003] Expecting false got %s\n", var_export($tmp, true));
- function test_proc1($db) {
+ function test_proc1($db) {
- $stmt = $db->query('SELECT @VERSION as _version');
- $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
- assert($tmp['_version'] === NULL);
- while ($stmt->fetch()) ;
+ $stmt = $db->query('SELECT @VERSION as _version');
+ $tmp = $stmt->fetch(PDO::FETCH_ASSOC);
+ assert($tmp['_version'] === NULL);
+ while ($stmt->fetch()) ;
- $db->exec('DROP PROCEDURE IF EXISTS p');
- $db->exec('CREATE PROCEDURE p(OUT ver_param VARCHAR(25)) BEGIN SELECT VERSION() INTO ver_param; END;');
- $db->exec('CALL p(@VERSION)');
- $stmt = $db->query('SELECT @VERSION as _version');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- var_dump($stmt->nextRowSet());
+ $db->exec('DROP PROCEDURE IF EXISTS p');
+ $db->exec('CREATE PROCEDURE p(OUT ver_param VARCHAR(25)) BEGIN SELECT VERSION() INTO ver_param; END;');
+ $db->exec('CALL p(@VERSION)');
+ $stmt = $db->query('SELECT @VERSION as _version');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ var_dump($stmt->nextRowSet());
- }
+ }
- function test_proc2($db) {
+ function test_proc2($db) {
- $db->exec('DROP PROCEDURE IF EXISTS p');
- $db->exec('CREATE PROCEDURE p() BEGIN SELECT id FROM test ORDER BY id ASC LIMIT 3; SELECT id, label FROM test WHERE id < 4 ORDER BY id DESC LIMIT 3; END;');
- $stmt = $db->query('CALL p()');
- do {
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- } while ($stmt->nextRowSet());
- var_dump($stmt->nextRowSet());
+ $db->exec('DROP PROCEDURE IF EXISTS p');
+ $db->exec('CREATE PROCEDURE p() BEGIN SELECT id FROM test ORDER BY id ASC LIMIT 3; SELECT id, label FROM test WHERE id < 4 ORDER BY id DESC LIMIT 3; END;');
+ $stmt = $db->query('CALL p()');
+ do {
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ } while ($stmt->nextRowSet());
+ var_dump($stmt->nextRowSet());
- }
+ }
- try {
+ try {
- // Emulated PS
- printf("Emulated PS...\n");
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
+ // Emulated PS
+ printf("Emulated PS...\n");
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 1);
- test_proc1($db);
- test_proc2($db);
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 1);
+ test_proc1($db);
+ test_proc2($db);
- $db = MySQLPDOTest::factory();
- $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 0);
- test_proc1($db);
- test_proc2($db);
+ $db = MySQLPDOTest::factory();
+ $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 0);
+ test_proc1($db);
+ test_proc2($db);
- // Native PS
- printf("Native PS...\n");
- $db = MySQLPDOTest::factory();
- $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 1);
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
- test_proc1($db);
- test_proc2($db);
+ // Native PS
+ printf("Native PS...\n");
+ $db = MySQLPDOTest::factory();
+ $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 1);
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
+ test_proc1($db);
+ test_proc2($db);
- $db = MySQLPDOTest::factory();
- $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 0);
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
+ $db = MySQLPDOTest::factory();
+ $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 0);
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
- test_proc1($db);
- test_proc2($db);
+ test_proc1($db);
+ test_proc2($db);
- @$db->exec('DROP PROCEDURE IF EXISTS p');
+ @$db->exec('DROP PROCEDURE IF EXISTS p');
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_rowcount.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_rowcount.phpt
index 713945e98d..99eb481304 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_rowcount.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_rowcount.phpt
@@ -8,24 +8,24 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
- MySQLPDOTest::createTestTable($db);
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+ MySQLPDOTest::createTestTable($db);
- try {
+ try {
- if (0 !== ($tmp = $db->query('SELECT id FROM test WHERE 1 = 0')->rowCount()))
- printf("[002] Expecting 0 got %s", var_export($tmp, true));
+ if (0 !== ($tmp = $db->query('SELECT id FROM test WHERE 1 = 0')->rowCount()))
+ printf("[002] Expecting 0 got %s", var_export($tmp, true));
- if (1 !== ($tmp = $db->query('SELECT id FROM test WHERE id = 1')->rowCount()))
- printf("[003] Expecting 1 got %s", var_export($tmp, true));
+ if (1 !== ($tmp = $db->query('SELECT id FROM test WHERE id = 1')->rowCount()))
+ printf("[003] Expecting 1 got %s", var_export($tmp, true));
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- print "done!";
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_unbuffered_2050.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_unbuffered_2050.phpt
index 35d4ba3cba..13f4f5769a 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_unbuffered_2050.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_unbuffered_2050.phpt
@@ -11,104 +11,104 @@ if (MYSQLPDOTest::isPDOMySQLnd())
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
-
- try {
-
- printf("Native PS...\n");
- $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
- if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
- printf("[004] Unable to turn off emulated prepared statements\n");
-
- printf("Buffered...\n");
- MySQLPDOTest::createTestTable($db);
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
- $stmt = $db->query('SELECT id, label FROM test WHERE id = 1');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- $stmt = $db->query('SELECT id, label FROM test WHERE id = 1');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
- printf("Unbuffered...\n");
- MySQLPDOTest::createTestTable($db);
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
- $stmt = $db->query('SELECT id, label FROM test WHERE id = 1');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- /*
- NOTE - this will cause an error and it OK
- When using unbuffered prepared statements MySQL expects you to
- fetch all data from the row before sending new data to the server.
- PDO::query() will prepare and execute a statement in one step.
- After the execution of PDO::query(), MySQL expects you to fetch
- the results from the line before sending new commands. However,
- PHP/PDO will send a CLOSE message as part of the PDO::query() call.
-
- The following happens:
-
- $stmt = PDO::query(<some query>)
- mysql_stmt_prepare()
- mysql_stmt_execute()
-
- $stmt->fetchAll()
- mysql_stmt_fetch()
-
- And now the right side of the expression will be executed first:
- $stmt = PDO::query(<some query>)
- PDO::query(<some query>)
- mysql_stmt_prepare
- mysql_stmt_execute
-
- PHP continues at the left side of the expression:
-
- $stmt = PDO::query(<some query>)
-
- What happens is that $stmt gets overwritten. The reference counter of the
- zval representing the current value of $stmt. PDO gets a callback that
- it has to free the resources associated with the zval representing the
- current value of stmt:
- mysql_stmt_close
- ---> ERROR
- ---> execute() has been send on the line, you are supposed to fetch
- ---> you must not try to send a CLOSE after execute()
- ---> Error: 2050 (CR_FETCH_CANCELED)
- ---> Message: Row retrieval was canceled by mysql_stmt_close() call
- ---> MySQL does its best to recover the line and cancels the retrieval
-
- PHP proceeds and assigns the new statement object/zval obtained from
- PDO to $stmt.
-
- Solutions:
- - use mysqlnd
- - use prepare() + execute() instead of query()
- - as there is no explicit close() in PDO, try unset($stmt) before the new assignment
- - fix PDO::query() [not the driver, fix PDO itself]
- */
-
- $stmt = $db->query('SELECT id, label FROM test WHERE id = 1');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
- $stmt = $db->prepare('SELECT id, label FROM test WHERE id = 1');
- $stmt->execute();
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
- $stmt = $db->prepare('SELECT id, label FROM test WHERE id = 1');
- $stmt->execute();
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
- unset($stmt);
- $stmt = $db->query('SELECT id, label FROM test WHERE id = 1');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
- unset($stmt);
- $stmt = $db->query('SELECT id, label FROM test WHERE id = 1');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
-
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
-
- print "done!";
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+
+ try {
+
+ printf("Native PS...\n");
+ $db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
+ if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY))
+ printf("[004] Unable to turn off emulated prepared statements\n");
+
+ printf("Buffered...\n");
+ MySQLPDOTest::createTestTable($db);
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
+ $stmt = $db->query('SELECT id, label FROM test WHERE id = 1');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ $stmt = $db->query('SELECT id, label FROM test WHERE id = 1');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+ printf("Unbuffered...\n");
+ MySQLPDOTest::createTestTable($db);
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
+ $stmt = $db->query('SELECT id, label FROM test WHERE id = 1');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ /*
+ NOTE - this will cause an error and it OK
+ When using unbuffered prepared statements MySQL expects you to
+ fetch all data from the row before sending new data to the server.
+ PDO::query() will prepare and execute a statement in one step.
+ After the execution of PDO::query(), MySQL expects you to fetch
+ the results from the line before sending new commands. However,
+ PHP/PDO will send a CLOSE message as part of the PDO::query() call.
+
+ The following happens:
+
+ $stmt = PDO::query(<some query>)
+ mysql_stmt_prepare()
+ mysql_stmt_execute()
+
+ $stmt->fetchAll()
+ mysql_stmt_fetch()
+
+ And now the right side of the expression will be executed first:
+ $stmt = PDO::query(<some query>)
+ PDO::query(<some query>)
+ mysql_stmt_prepare
+ mysql_stmt_execute
+
+ PHP continues at the left side of the expression:
+
+ $stmt = PDO::query(<some query>)
+
+ What happens is that $stmt gets overwritten. The reference counter of the
+ zval representing the current value of $stmt. PDO gets a callback that
+ it has to free the resources associated with the zval representing the
+ current value of stmt:
+ mysql_stmt_close
+ ---> ERROR
+ ---> execute() has been send on the line, you are supposed to fetch
+ ---> you must not try to send a CLOSE after execute()
+ ---> Error: 2050 (CR_FETCH_CANCELED)
+ ---> Message: Row retrieval was canceled by mysql_stmt_close() call
+ ---> MySQL does its best to recover the line and cancels the retrieval
+
+ PHP proceeds and assigns the new statement object/zval obtained from
+ PDO to $stmt.
+
+ Solutions:
+ - use mysqlnd
+ - use prepare() + execute() instead of query()
+ - as there is no explicit close() in PDO, try unset($stmt) before the new assignment
+ - fix PDO::query() [not the driver, fix PDO itself]
+ */
+
+ $stmt = $db->query('SELECT id, label FROM test WHERE id = 1');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+ $stmt = $db->prepare('SELECT id, label FROM test WHERE id = 1');
+ $stmt->execute();
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+ $stmt = $db->prepare('SELECT id, label FROM test WHERE id = 1');
+ $stmt->execute();
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+ unset($stmt);
+ $stmt = $db->query('SELECT id, label FROM test WHERE id = 1');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+ unset($stmt);
+ $stmt = $db->query('SELECT id, label FROM test WHERE id = 1');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
+
+ print "done!";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_variable_columncount.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_variable_columncount.phpt
index 7c39b88558..21fd83f57d 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_variable_columncount.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_variable_columncount.phpt
@@ -21,105 +21,105 @@ if ($version < 50000)
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- $db = MySQLPDOTest::factory();
-
- function check_result($offset, $stmt, $columns) {
-
- do {
- $row = $stmt->fetch(PDO::FETCH_ASSOC);
- } while ($stmt->nextRowSet());
-
- if (!isset($row['one']) || ($row['one'] != 1)) {
- printf("[%03d + 1] Expecting array('one' => 1), got %s\n", $offset, var_export($row, true));
- return false;
- }
-
- if (($columns == 2) &&
- (!isset($row['two']) || ($row['two'] != 2))) {
- printf("[%03d + 2] Expecting array('one' => 1, 'two' => 2), got %s\n", $offset, var_export($row, true));
- return false;
- } else if (($columns == 1) && isset($row['two'])) {
- printf("[%03d + 3] Expecting one array element got two\n", $offset);
- return false;
- }
-
- return true;
- }
-
- try {
-
- // What will happen if a PS returns a different number of result set column upon each execution?
- // Lets try with a SP accepting parameters...
- $db->exec('DROP PROCEDURE IF EXISTS p');
- $db->exec('CREATE PROCEDURE p(IN cols INT) BEGIN IF cols < 2 THEN SELECT cols AS "one"; ELSE SELECT 1 AS "one", cols AS "two"; END IF; END;');
-
- // Emulates PS first
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
- $stmt = $db->prepare('CALL p(?)');
-
- $columns = null;
- $stmt->bindParam(1, $columns);
- for ($i = 0; $i < 5; $i++) {
- $columns = ($i % 2) + 1;
- $stmt->execute();
- check_result($i, $stmt, $columns);
- }
-
- if (MySQLPDOTest::isPDOMySQLnd()) {
- // Native PS
- // Libmysql cannot handle such a stored procedure. You will see leaks with libmysql
- $db = MySQLPDOTest::factory();
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 1);
- $stmt = $db->prepare('CALL p(?)');
- $stmt->bindParam(1, $columns);
- for ($i = 5; $i < 10; $i++) {
- $columns = ($i % 2) + 1;
- $stmt->execute();
- check_result($i, $stmt, $columns);
- }
- }
-
- // And now without parameters... - this gives a different control flow inside PDO
- $db->exec('DROP PROCEDURE IF EXISTS p');
- $db->exec('CREATE PROCEDURE p() BEGIN DECLARE cols INT; SELECT @numcols INTO cols; IF cols < 2 THEN SET @numcols = 2; SELECT cols AS "one"; ELSE SET @numcols = 1; SELECT 1 AS "one", cols AS "two"; END IF; END;');
-
- // Emulates PS first
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
- $db->exec('SET @numcols = 1');
- $stmt = $db->prepare('CALL p()');
- $stmt->execute();
- check_result(11, $stmt, 1);
- $stmt->execute();
- check_result(12, $stmt, 2);
- $db->exec('SET @numcols = 1');
- $stmt->execute();
- check_result(13, $stmt, 1);
-
- if (MySQLPDOTest::isPDOMySQLnd()) {
- // Native PS
- // Libmysql cannot handle such a stored procedure. You will see leaks with libmysql
- $db = MySQLPDOTest::factory();
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
- $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 1);
- $db->exec('SET @numcols = 1');
- $stmt = $db->prepare('CALL p()');
- $stmt->execute();
- check_result(14, $stmt, 1);
- $stmt->execute();
- check_result(15, $stmt, 2);
- $db->exec('SET @numcols = 1');
- $stmt->execute();
- check_result(16, $stmt, 1);
- }
-
- } catch (PDOException $e) {
- printf("[99] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
-
- print "done!";
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ $db = MySQLPDOTest::factory();
+
+ function check_result($offset, $stmt, $columns) {
+
+ do {
+ $row = $stmt->fetch(PDO::FETCH_ASSOC);
+ } while ($stmt->nextRowSet());
+
+ if (!isset($row['one']) || ($row['one'] != 1)) {
+ printf("[%03d + 1] Expecting array('one' => 1), got %s\n", $offset, var_export($row, true));
+ return false;
+ }
+
+ if (($columns == 2) &&
+ (!isset($row['two']) || ($row['two'] != 2))) {
+ printf("[%03d + 2] Expecting array('one' => 1, 'two' => 2), got %s\n", $offset, var_export($row, true));
+ return false;
+ } else if (($columns == 1) && isset($row['two'])) {
+ printf("[%03d + 3] Expecting one array element got two\n", $offset);
+ return false;
+ }
+
+ return true;
+ }
+
+ try {
+
+ // What will happen if a PS returns a different number of result set column upon each execution?
+ // Lets try with a SP accepting parameters...
+ $db->exec('DROP PROCEDURE IF EXISTS p');
+ $db->exec('CREATE PROCEDURE p(IN cols INT) BEGIN IF cols < 2 THEN SELECT cols AS "one"; ELSE SELECT 1 AS "one", cols AS "two"; END IF; END;');
+
+ // Emulates PS first
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
+ $stmt = $db->prepare('CALL p(?)');
+
+ $columns = null;
+ $stmt->bindParam(1, $columns);
+ for ($i = 0; $i < 5; $i++) {
+ $columns = ($i % 2) + 1;
+ $stmt->execute();
+ check_result($i, $stmt, $columns);
+ }
+
+ if (MySQLPDOTest::isPDOMySQLnd()) {
+ // Native PS
+ // Libmysql cannot handle such a stored procedure. You will see leaks with libmysql
+ $db = MySQLPDOTest::factory();
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 1);
+ $stmt = $db->prepare('CALL p(?)');
+ $stmt->bindParam(1, $columns);
+ for ($i = 5; $i < 10; $i++) {
+ $columns = ($i % 2) + 1;
+ $stmt->execute();
+ check_result($i, $stmt, $columns);
+ }
+ }
+
+ // And now without parameters... - this gives a different control flow inside PDO
+ $db->exec('DROP PROCEDURE IF EXISTS p');
+ $db->exec('CREATE PROCEDURE p() BEGIN DECLARE cols INT; SELECT @numcols INTO cols; IF cols < 2 THEN SET @numcols = 2; SELECT cols AS "one"; ELSE SET @numcols = 1; SELECT 1 AS "one", cols AS "two"; END IF; END;');
+
+ // Emulates PS first
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
+ $db->exec('SET @numcols = 1');
+ $stmt = $db->prepare('CALL p()');
+ $stmt->execute();
+ check_result(11, $stmt, 1);
+ $stmt->execute();
+ check_result(12, $stmt, 2);
+ $db->exec('SET @numcols = 1');
+ $stmt->execute();
+ check_result(13, $stmt, 1);
+
+ if (MySQLPDOTest::isPDOMySQLnd()) {
+ // Native PS
+ // Libmysql cannot handle such a stored procedure. You will see leaks with libmysql
+ $db = MySQLPDOTest::factory();
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 1);
+ $db->exec('SET @numcols = 1');
+ $stmt = $db->prepare('CALL p()');
+ $stmt->execute();
+ check_result(14, $stmt, 1);
+ $stmt->execute();
+ check_result(15, $stmt, 2);
+ $db->exec('SET @numcols = 1');
+ $stmt->execute();
+ check_result(16, $stmt, 1);
+ }
+
+ } catch (PDOException $e) {
+ printf("[99] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
+
+ print "done!";
?>
--EXPECT--
done!
diff --git a/ext/pdo_mysql/tests/pdo_mysql_subclass.phpt b/ext/pdo_mysql/tests/pdo_mysql_subclass.phpt
index 83158b3484..f98271d792 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_subclass.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_subclass.phpt
@@ -8,65 +8,65 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
- try {
+ try {
- class MyPDO extends PDO {
+ class MyPDO extends PDO {
- public function __construct() {
- $this->protocol();
- return call_user_func_array(array($this, 'parent::__construct'), func_get_args());
- }
+ public function __construct() {
+ $this->protocol();
+ return call_user_func_array(array($this, 'parent::__construct'), func_get_args());
+ }
- public function exec($statement) {
- $this->protocol();
- return parent::exec($statement);
- }
+ public function exec($statement) {
+ $this->protocol();
+ return parent::exec($statement);
+ }
- public function query($statement) {
- $this->protocol();
- return call_user_func_array(array($this, 'parent::query'), func_get_args());
- }
+ public function query($statement) {
+ $this->protocol();
+ return call_user_func_array(array($this, 'parent::query'), func_get_args());
+ }
- public function __call($method, $args) {
- print "__call(".var_export($method,true).", ".var_export($args, true).")\n";
- // $this->protocol();
- }
+ public function __call($method, $args) {
+ print "__call(".var_export($method,true).", ".var_export($args, true).")\n";
+ // $this->protocol();
+ }
- private function protocol() {
- $stack = debug_backtrace();
- if (!isset($stack[1]))
- return;
+ private function protocol() {
+ $stack = debug_backtrace();
+ if (!isset($stack[1]))
+ return;
- printf("%s(", $stack[1]['function']);
- $args = '';
- foreach ($stack[1]['args'] as $k => $v)
- $args .= sprintf("%s, ", var_export($v, true));
- if ($args != '')
- printf("%s", substr($args, 0, -2));
- printf(")\n");
- }
+ printf("%s(", $stack[1]['function']);
+ $args = '';
+ foreach ($stack[1]['args'] as $k => $v)
+ $args .= sprintf("%s, ", var_export($v, true));
+ if ($args != '')
+ printf("%s", substr($args, 0, -2));
+ printf(")\n");
+ }
- }
+ }
- $db = new MyPDO(PDO_MYSQL_TEST_DSN, PDO_MYSQL_TEST_USER, PDO_MYSQL_TEST_PASS);
- $db->exec('DROP TABLE IF EXISTS test');
- $db->exec('CREATE TABLE test(id INT)');
- $db->exec('INSERT INTO test(id) VALUES (1), (2)');
- $stmt = $db->query('SELECT * FROM test ORDER BY id ASC');
- var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
- var_dump($stmt->fetch());
- $db->intercept_call();
+ $db = new MyPDO(PDO_MYSQL_TEST_DSN, PDO_MYSQL_TEST_USER, PDO_MYSQL_TEST_PASS);
+ $db->exec('DROP TABLE IF EXISTS test');
+ $db->exec('CREATE TABLE test(id INT)');
+ $db->exec('INSERT INTO test(id) VALUES (1), (2)');
+ $stmt = $db->query('SELECT * FROM test ORDER BY id ASC');
+ var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
+ var_dump($stmt->fetch());
+ $db->intercept_call();
- } catch (PDOException $e) {
- printf("[001] %s [%s] %s\n",
- $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
- }
+ } catch (PDOException $e) {
+ printf("[001] %s [%s] %s\n",
+ $e->getMessage(), $db->errorCode(), implode(' ', $db->errorInfo()));
+ }
- $db->exec('DROP TABLE IF EXISTS test');
- print "done!\n";
+ $db->exec('DROP TABLE IF EXISTS test');
+ print "done!\n";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_types.phpt b/ext/pdo_mysql/tests/pdo_mysql_types.phpt
index fee1aff514..6360c9a61b 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_types.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_types.phpt
@@ -8,171 +8,171 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
-
- function test_type(&$db, $offset, $sql_type, $value, $ret_value = NULL, $pattern = NULL, $alternative_type = NULL) {
-
- $db->exec('DROP TABLE IF EXISTS test');
- $sql = sprintf('CREATE TABLE test(id INT, label %s) ENGINE=%s', $sql_type, MySQLPDOTest::getTableEngine());
- @$db->exec($sql);
- if ($db->errorCode() != 0) {
- // not all MySQL Server versions and/or engines might support the type
- return true;
- }
-
- $stmt = $db->prepare('INSERT INTO test(id, label) VALUES (?, ?)');
- $stmt->bindValue(1, $offset);
- $stmt->bindValue(2, $value);
- if (!$stmt->execute()) {
- printf("[%03d + 1] INSERT failed, %s\n", $offset, var_export($stmt->errorInfo(), true));
- return false;
- }
- $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
- $stmt = $db->query('SELECT id, label FROM test');
- $row = $stmt->fetch(PDO::FETCH_ASSOC);
- $stmt->closeCursor();
-
- if (!isset($row['id']) || !isset($row['label'])) {
- printf("[%03d + 2] Fetched result seems wrong, dumping result: %s\n", $offset, var_export($row, true));
- return false;
- }
-
- if ($row['id'] != $offset) {
- printf("[%03d + 3] Expecting %s got %s\n", $offset, $row['id']);
- return false;
- }
-
- if (!is_null($pattern)) {
- if (!preg_match($pattern, $row['label'])) {
- printf("[%03d + 5] Value seems wrong, accepting pattern %s got %s, check manually\n",
- $offset, $pattern, var_export($row['label'], true));
- return false;
- }
-
- } else {
-
- $exp = $value;
- if (!is_null($ret_value)) {
- // we expect a different return value than our input value
- // typically the difference is only the type
- $exp = $ret_value;
- }
- if ($row['label'] !== $exp && !is_null($alternative_type) && gettype($row['label']) != $alternative_type) {
- printf("[%03d + 4] %s - input = %s/%s, output = %s/%s (alternative type: %s)\n", $offset,
- $sql_type, var_export($exp, true), gettype($exp),
- var_export($row['label'], true), gettype($row['label']),
- $alternative_type);
- return false;
- }
-
- }
-
- $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
- $stmt = $db->query('SELECT id, label FROM test');
- $row_string = $stmt->fetch(PDO::FETCH_ASSOC);
- $stmt->closeCursor();
- if (is_null($pattern) && ($row['label'] != $row_string['label'])) {
- printf("%s - STRINGIGY = %s, NATIVE = %s\n", $sql_type, var_export($row_string['label'], true), var_export($row['label'], true));
- return false;
- } else if (!is_null($pattern) && !preg_match($pattern, $row_string['label'])) {
- printf("%s - STRINGIGY = %s, NATIVE = %s, pattern '%s'\n", $sql_type, var_export($row_string['label'], true), var_export($row['label'], true), $pattern);
- return false;
- }
-
-
- return true;
- }
-
- $db = MySQLPDOTest::factory();
- $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
- $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+
+ function test_type(&$db, $offset, $sql_type, $value, $ret_value = NULL, $pattern = NULL, $alternative_type = NULL) {
+
+ $db->exec('DROP TABLE IF EXISTS test');
+ $sql = sprintf('CREATE TABLE test(id INT, label %s) ENGINE=%s', $sql_type, MySQLPDOTest::getTableEngine());
+ @$db->exec($sql);
+ if ($db->errorCode() != 0) {
+ // not all MySQL Server versions and/or engines might support the type
+ return true;
+ }
+
+ $stmt = $db->prepare('INSERT INTO test(id, label) VALUES (?, ?)');
+ $stmt->bindValue(1, $offset);
+ $stmt->bindValue(2, $value);
+ if (!$stmt->execute()) {
+ printf("[%03d + 1] INSERT failed, %s\n", $offset, var_export($stmt->errorInfo(), true));
+ return false;
+ }
+ $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
+ $stmt = $db->query('SELECT id, label FROM test');
+ $row = $stmt->fetch(PDO::FETCH_ASSOC);
+ $stmt->closeCursor();
+
+ if (!isset($row['id']) || !isset($row['label'])) {
+ printf("[%03d + 2] Fetched result seems wrong, dumping result: %s\n", $offset, var_export($row, true));
+ return false;
+ }
+
+ if ($row['id'] != $offset) {
+ printf("[%03d + 3] Expecting %s got %s\n", $offset, $row['id']);
+ return false;
+ }
+
+ if (!is_null($pattern)) {
+ if (!preg_match($pattern, $row['label'])) {
+ printf("[%03d + 5] Value seems wrong, accepting pattern %s got %s, check manually\n",
+ $offset, $pattern, var_export($row['label'], true));
+ return false;
+ }
+
+ } else {
+
+ $exp = $value;
+ if (!is_null($ret_value)) {
+ // we expect a different return value than our input value
+ // typically the difference is only the type
+ $exp = $ret_value;
+ }
+ if ($row['label'] !== $exp && !is_null($alternative_type) && gettype($row['label']) != $alternative_type) {
+ printf("[%03d + 4] %s - input = %s/%s, output = %s/%s (alternative type: %s)\n", $offset,
+ $sql_type, var_export($exp, true), gettype($exp),
+ var_export($row['label'], true), gettype($row['label']),
+ $alternative_type);
+ return false;
+ }
+
+ }
+
+ $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
+ $stmt = $db->query('SELECT id, label FROM test');
+ $row_string = $stmt->fetch(PDO::FETCH_ASSOC);
+ $stmt->closeCursor();
+ if (is_null($pattern) && ($row['label'] != $row_string['label'])) {
+ printf("%s - STRINGIGY = %s, NATIVE = %s\n", $sql_type, var_export($row_string['label'], true), var_export($row['label'], true));
+ return false;
+ } else if (!is_null($pattern) && !preg_match($pattern, $row_string['label'])) {
+ printf("%s - STRINGIGY = %s, NATIVE = %s, pattern '%s'\n", $sql_type, var_export($row_string['label'], true), var_export($row['label'], true), $pattern);
+ return false;
+ }
+
+
+ return true;
+ }
+
+ $db = MySQLPDOTest::factory();
+ $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
+ $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
/*
- test_type($db, 20, 'BIT(8)', 1);
+ test_type($db, 20, 'BIT(8)', 1);
*/
- $is_mysqlnd = MySQLPDOTest::isPDOMySQLnd();
+ $is_mysqlnd = MySQLPDOTest::isPDOMySQLnd();
- test_type($db, 30, 'TINYINT', -127, ($is_mysqlnd) ? -127: '-127');
- test_type($db, 40, 'TINYINT UNSIGNED', 255, ($is_mysqlnd) ? 255 : '255');
- test_type($db, 50, 'BOOLEAN', 1, ($is_mysqlnd) ? 1 : '1');
+ test_type($db, 30, 'TINYINT', -127, ($is_mysqlnd) ? -127: '-127');
+ test_type($db, 40, 'TINYINT UNSIGNED', 255, ($is_mysqlnd) ? 255 : '255');
+ test_type($db, 50, 'BOOLEAN', 1, ($is_mysqlnd) ? 1 : '1');
- test_type($db, 60, 'SMALLINT', -32768, ($is_mysqlnd) ? -32768 : '-32768');
- test_type($db, 70, 'SMALLINT UNSIGNED', 65535, ($is_mysqlnd) ? 65535 : '65535');
+ test_type($db, 60, 'SMALLINT', -32768, ($is_mysqlnd) ? -32768 : '-32768');
+ test_type($db, 70, 'SMALLINT UNSIGNED', 65535, ($is_mysqlnd) ? 65535 : '65535');
- test_type($db, 80, 'MEDIUMINT', -8388608, ($is_mysqlnd) ? -8388608 : '-8388608');
- test_type($db, 90, 'MEDIUMINT UNSIGNED', 16777215, ($is_mysqlnd) ? 16777215 : '16777215');
+ test_type($db, 80, 'MEDIUMINT', -8388608, ($is_mysqlnd) ? -8388608 : '-8388608');
+ test_type($db, 90, 'MEDIUMINT UNSIGNED', 16777215, ($is_mysqlnd) ? 16777215 : '16777215');
- test_type($db, 100, 'INT', -2147483648,
- ($is_mysqlnd) ? ((PHP_INT_SIZE > 4) ? (int)-2147483648 : (double)-2147483648) : '-2147483648',
- NULL, ($is_mysqlnd) ? 'integer' : NULL);
+ test_type($db, 100, 'INT', -2147483648,
+ ($is_mysqlnd) ? ((PHP_INT_SIZE > 4) ? (int)-2147483648 : (double)-2147483648) : '-2147483648',
+ NULL, ($is_mysqlnd) ? 'integer' : NULL);
- test_type($db, 110, 'INT UNSIGNED', 4294967295, ($is_mysqlnd) ? ((PHP_INT_SIZE > 4) ? 4294967295 : '4294967295') : '4294967295');
+ test_type($db, 110, 'INT UNSIGNED', 4294967295, ($is_mysqlnd) ? ((PHP_INT_SIZE > 4) ? 4294967295 : '4294967295') : '4294967295');
- // no chance to return int with the current PDO version - we are forced to return strings
- test_type($db, 120, 'BIGINT', 1, ($is_mysqlnd) ? 1 : '1');
- // to avoid trouble with numeric ranges, lets pass the numbers as a string
- test_type($db, 130, 'BIGINT', '-9223372036854775808', NULL, '/^\-9[\.]*22/');
- test_type($db, 140, 'BIGINT UNSIGNED', '18446744073709551615', NULL, '/^1[\.]*844/');
+ // no chance to return int with the current PDO version - we are forced to return strings
+ test_type($db, 120, 'BIGINT', 1, ($is_mysqlnd) ? 1 : '1');
+ // to avoid trouble with numeric ranges, lets pass the numbers as a string
+ test_type($db, 130, 'BIGINT', '-9223372036854775808', NULL, '/^\-9[\.]*22/');
+ test_type($db, 140, 'BIGINT UNSIGNED', '18446744073709551615', NULL, '/^1[\.]*844/');
- test_type($db, 150, 'REAL', -1.01, ($is_mysqlnd) ? -1.01 : '-1.01');
- test_type($db, 160, 'REAL UNSIGNED', 1.01, ($is_mysqlnd) ? 1.01 : '1.01');
+ test_type($db, 150, 'REAL', -1.01, ($is_mysqlnd) ? -1.01 : '-1.01');
+ test_type($db, 160, 'REAL UNSIGNED', 1.01, ($is_mysqlnd) ? 1.01 : '1.01');
- test_type($db, 170, 'DOUBLE', -1.01, ($is_mysqlnd) ? -1.01 : '-1.01');
- test_type($db, 180, 'DOUBLE UNSIGNED', 1.01, ($is_mysqlnd) ? 1.01 : '1.01');
+ test_type($db, 170, 'DOUBLE', -1.01, ($is_mysqlnd) ? -1.01 : '-1.01');
+ test_type($db, 180, 'DOUBLE UNSIGNED', 1.01, ($is_mysqlnd) ? 1.01 : '1.01');
- test_type($db, 210, 'FLOAT', -1.01, NULL, '/^\-1.0\d+/');
- test_type($db, 220, 'FLOAT UNSIGNED', 1.01, NULL, '/^1.0\d+/');
+ test_type($db, 210, 'FLOAT', -1.01, NULL, '/^\-1.0\d+/');
+ test_type($db, 220, 'FLOAT UNSIGNED', 1.01, NULL, '/^1.0\d+/');
- test_type($db, 250, 'DECIMAL', -1.01, '-1');
- test_type($db, 260, 'DECIMAL UNSIGNED', 1.01, '1');
+ test_type($db, 250, 'DECIMAL', -1.01, '-1');
+ test_type($db, 260, 'DECIMAL UNSIGNED', 1.01, '1');
- test_type($db, 290, 'NUMERIC', -1.01, '-1');
- test_type($db, 300, 'NUMERIC UNSIGNED', 1.01, '1');
+ test_type($db, 290, 'NUMERIC', -1.01, '-1');
+ test_type($db, 300, 'NUMERIC UNSIGNED', 1.01, '1');
- test_type($db, 330, 'DATE', '2008-04-23');
- test_type($db, 340, 'TIME', '14:37:00');
- test_type($db, 350, 'TIMESTAMP', '2008-05-06 21:09:00');
- test_type($db, 360, 'DATETIME', '2008-03-23 14:38:00');
- test_type($db, 370, 'YEAR', 2008, ($is_mysqlnd) ? 2008 : '2008');
+ test_type($db, 330, 'DATE', '2008-04-23');
+ test_type($db, 340, 'TIME', '14:37:00');
+ test_type($db, 350, 'TIMESTAMP', '2008-05-06 21:09:00');
+ test_type($db, 360, 'DATETIME', '2008-03-23 14:38:00');
+ test_type($db, 370, 'YEAR', 2008, ($is_mysqlnd) ? 2008 : '2008');
- test_type($db, 380, 'CHAR(1)', 'a');
- test_type($db, 390, 'CHAR(10)', '0123456789');
- test_type($db, 400, 'CHAR(255)', str_repeat('z', 255));
- test_type($db, 410, 'VARCHAR(1)', 'a');
- test_type($db, 420, 'VARCHAR(10)', '0123456789');
- test_type($db, 430, 'VARCHAR(255)', str_repeat('z', 255));
+ test_type($db, 380, 'CHAR(1)', 'a');
+ test_type($db, 390, 'CHAR(10)', '0123456789');
+ test_type($db, 400, 'CHAR(255)', str_repeat('z', 255));
+ test_type($db, 410, 'VARCHAR(1)', 'a');
+ test_type($db, 420, 'VARCHAR(10)', '0123456789');
+ test_type($db, 430, 'VARCHAR(255)', str_repeat('z', 255));
- test_type($db, 440, 'BINARY(1)', str_repeat('a', 1));
- test_type($db, 450, 'BINARY(255)', str_repeat('b', 255));
- test_type($db, 460, 'VARBINARY(1)', str_repeat('a', 1));
- test_type($db, 470, 'VARBINARY(255)', str_repeat('b', 255));
+ test_type($db, 440, 'BINARY(1)', str_repeat('a', 1));
+ test_type($db, 450, 'BINARY(255)', str_repeat('b', 255));
+ test_type($db, 460, 'VARBINARY(1)', str_repeat('a', 1));
+ test_type($db, 470, 'VARBINARY(255)', str_repeat('b', 255));
- test_type($db, 480, 'TINYBLOB', str_repeat('b', 255));
- test_type($db, 490, 'BLOB', str_repeat('b', 256));
- test_type($db, 500, 'MEDIUMBLOB', str_repeat('b', 256));
- test_type($db, 510, 'LONGBLOB', str_repeat('b', 256));
+ test_type($db, 480, 'TINYBLOB', str_repeat('b', 255));
+ test_type($db, 490, 'BLOB', str_repeat('b', 256));
+ test_type($db, 500, 'MEDIUMBLOB', str_repeat('b', 256));
+ test_type($db, 510, 'LONGBLOB', str_repeat('b', 256));
- test_type($db, 520, 'TINYTEXT', str_repeat('b', 255));
- test_type($db, 530, 'TINYTEXT BINARY', str_repeat('b', 255));
+ test_type($db, 520, 'TINYTEXT', str_repeat('b', 255));
+ test_type($db, 530, 'TINYTEXT BINARY', str_repeat('b', 255));
- test_type($db, 560, 'TEXT', str_repeat('b', 256));
- test_type($db, 570, 'TEXT BINARY', str_repeat('b', 256));
+ test_type($db, 560, 'TEXT', str_repeat('b', 256));
+ test_type($db, 570, 'TEXT BINARY', str_repeat('b', 256));
- test_type($db, 580, 'MEDIUMTEXT', str_repeat('b', 256));
- test_type($db, 590, 'MEDIUMTEXT BINARY', str_repeat('b', 256));
+ test_type($db, 580, 'MEDIUMTEXT', str_repeat('b', 256));
+ test_type($db, 590, 'MEDIUMTEXT BINARY', str_repeat('b', 256));
- test_type($db, 600, 'LONGTEXT', str_repeat('b', 256));
- test_type($db, 610, 'LONGTEXT BINARY', str_repeat('b', 256));
+ test_type($db, 600, 'LONGTEXT', str_repeat('b', 256));
+ test_type($db, 610, 'LONGTEXT BINARY', str_repeat('b', 256));
- test_type($db, 620, "ENUM('yes', 'no') DEFAULT 'yes'", 'no');
- test_type($db, 630, "SET('yes', 'no') DEFAULT 'yes'", 'no');
+ test_type($db, 620, "ENUM('yes', 'no') DEFAULT 'yes'", 'no');
+ test_type($db, 630, "SET('yes', 'no') DEFAULT 'yes'", 'no');
- test_type($db, 640, 'DECIMAL(3,2)', -1.01, '-1.01');
+ test_type($db, 640, 'DECIMAL(3,2)', -1.01, '-1.01');
- echo "done!\n";
+ echo "done!\n";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_types_zerofill.phpt b/ext/pdo_mysql/tests/pdo_mysql_types_zerofill.phpt
index 1ef5ab1370..8e98b74acb 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_types_zerofill.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_types_zerofill.phpt
@@ -8,115 +8,115 @@ MySQLPDOTest::skip();
?>
--FILE--
<?php
- require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
-
- function test_type(&$db, $offset, $sql_type, $value, $ret_value = NULL, $pattern = NULL) {
-
- $db->exec('DROP TABLE IF EXISTS test');
- $sql = sprintf('CREATE TABLE test(id INT, label %s) ENGINE=%s', $sql_type, MySQLPDOTest::getTableEngine());
- @$db->exec($sql);
- if ($db->errorCode() != 0) {
- // not all MySQL Server versions and/or engines might support the type
- return true;
- }
-
- $stmt = $db->prepare('INSERT INTO test(id, label) VALUES (?, ?)');
- $stmt->bindValue(1, $offset);
- $stmt->bindValue(2, $value);
- try {
- if (!$stmt->execute()) {
- printf("[%03d + 1] INSERT failed, %s\n", $offset, var_export($stmt->errorInfo(), true));
- return false;
- }
- } catch (PDOException $e) {
- // This might be a SQL warning on signed values inserted in unsigned columns
- // Zerofill implies unsigned but the test plays with signed = negative values as well!
- return true;
- }
-
- $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
- $stmt = $db->query('SELECT id, label FROM test');
- $row = $stmt->fetch(PDO::FETCH_ASSOC);
- $stmt->closeCursor();
- if (!isset($row['id']) || !isset($row['label'])) {
- printf("[%03d + 2] Fetched result seems wrong, dumping result: %s\n", $offset, var_export($row, true));
- return false;
- }
-
- if ($row['id'] != $offset) {
- printf("[%03d + 3] Expecting %s got %s\n", $offset, $row['id']);
- return false;
- }
-
- if (!is_null($pattern)) {
-
- if (!preg_match($pattern, $row['label'])) {
- printf("[%03d + 5] Value seems wrong, accepting pattern %s got %s, check manually\n",
- $offset, $pattern, var_export($row['label'], true));
- return false;
- }
-
- } else {
-
- $exp = $value;
- if (!is_null($ret_value)) {
- // we expect a different return value than our input value
- // typically the difference is only the type
- $exp = $ret_value;
- }
-
- if ($row['label'] !== $exp) {
- printf("[%03d + 4] %s - input = %s/%s, output = %s/%s\n", $offset,
- $sql_type, var_export($exp, true), gettype($exp),
- var_export($row['label'], true), gettype($row['label']));
- return false;
- }
-
- }
-
- $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
- $stmt = $db->query('SELECT id, label FROM test');
- $row_string = $stmt->fetch(PDO::FETCH_ASSOC);
- $stmt->closeCursor();
- if ($row['label'] != $row_string['label']) {
- printf("%s - STRINGIGY = %s, NATIVE = %s\n", $sql_type, var_export($row_string['label'], true), var_export($row['label'], true));
- return false;
- }
-
- return true;
- }
-
- $db = MySQLPDOTest::factory();
- $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
- $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
-
- $stmt = $db->prepare('SELECT @@sql_mode AS _mode');
- $stmt->execute();
- $row = $stmt->fetch(PDO::FETCH_ASSOC);
- $real_as_float = (false === stristr($row['_mode'], "REAL_AS_FLOAT")) ? false : true;
-
- test_type($db, 100, 'REAL ZEROFILL', -1.01, NULL, '/^[0]*0$/');
- test_type($db, 110, 'REAL ZEROFILL', 1.01, NULL, ($real_as_float) ? '/^[0]*1\.0.*$/' : '/^[0]*1\.01$/');
- test_type($db, 120, 'REAL UNSIGNED ZEROFILL', 1.01, NULL, ($real_as_float) ? '/^[0]*1\..*$/' : '/^[0]*1\.01$/');
-
- test_type($db, 130, 'DOUBLE ZEROFILL', -1.01, NULL, '/^[0]*0$/');
- test_type($db, 140, 'DOUBLE ZEROFILL', 1.01, NULL, '/^[0]*1\.01$/');
- test_type($db, 150, 'DOUBLE UNSIGNED ZEROFILL', 1.01, NULL, '/^[0]*1\.01$/');
-
- test_type($db, 160, 'FLOAT ZEROFILL', -1.01, NULL, '/^[0]*0$/');
- test_type($db, 170, 'FLOAT ZEROFILL', 1, NULL, '/^[0]*1$/');
- test_type($db, 180, 'FLOAT UNSIGNED ZEROFILL', -1, NULL, '/^[0]*0$/');
-
- test_type($db, 190, 'DECIMAL ZEROFILL', -1.01, NULL, '/^[0]*0$/');
- test_type($db, 200, 'DECIMAL ZEROFILL', 1.01, NULL, '/^[0]*1$/');
- test_type($db, 210, 'DECIMAL UNSIGNED ZEROFILL', 1.01, NULL, '/^[0]*1$/');
-
- test_type($db, 220, 'NUMERIC ZEROFILL', -1, NULL, '/^[0]*0$/');
- test_type($db, 230, 'NUMERIC ZEROFILL', 1, NULL, '/^[0]*1$/');
- test_type($db, 240, 'NUMERIC UNSIGNED ZEROFILL', 1.01, NULL, '/^[0]*1$/');
-
- echo "done!\n";
+ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+
+ function test_type(&$db, $offset, $sql_type, $value, $ret_value = NULL, $pattern = NULL) {
+
+ $db->exec('DROP TABLE IF EXISTS test');
+ $sql = sprintf('CREATE TABLE test(id INT, label %s) ENGINE=%s', $sql_type, MySQLPDOTest::getTableEngine());
+ @$db->exec($sql);
+ if ($db->errorCode() != 0) {
+ // not all MySQL Server versions and/or engines might support the type
+ return true;
+ }
+
+ $stmt = $db->prepare('INSERT INTO test(id, label) VALUES (?, ?)');
+ $stmt->bindValue(1, $offset);
+ $stmt->bindValue(2, $value);
+ try {
+ if (!$stmt->execute()) {
+ printf("[%03d + 1] INSERT failed, %s\n", $offset, var_export($stmt->errorInfo(), true));
+ return false;
+ }
+ } catch (PDOException $e) {
+ // This might be a SQL warning on signed values inserted in unsigned columns
+ // Zerofill implies unsigned but the test plays with signed = negative values as well!
+ return true;
+ }
+
+ $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
+ $stmt = $db->query('SELECT id, label FROM test');
+ $row = $stmt->fetch(PDO::FETCH_ASSOC);
+ $stmt->closeCursor();
+ if (!isset($row['id']) || !isset($row['label'])) {
+ printf("[%03d + 2] Fetched result seems wrong, dumping result: %s\n", $offset, var_export($row, true));
+ return false;
+ }
+
+ if ($row['id'] != $offset) {
+ printf("[%03d + 3] Expecting %s got %s\n", $offset, $row['id']);
+ return false;
+ }
+
+ if (!is_null($pattern)) {
+
+ if (!preg_match($pattern, $row['label'])) {
+ printf("[%03d + 5] Value seems wrong, accepting pattern %s got %s, check manually\n",
+ $offset, $pattern, var_export($row['label'], true));
+ return false;
+ }
+
+ } else {
+
+ $exp = $value;
+ if (!is_null($ret_value)) {
+ // we expect a different return value than our input value
+ // typically the difference is only the type
+ $exp = $ret_value;
+ }
+
+ if ($row['label'] !== $exp) {
+ printf("[%03d + 4] %s - input = %s/%s, output = %s/%s\n", $offset,
+ $sql_type, var_export($exp, true), gettype($exp),
+ var_export($row['label'], true), gettype($row['label']));
+ return false;
+ }
+
+ }
+
+ $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
+ $stmt = $db->query('SELECT id, label FROM test');
+ $row_string = $stmt->fetch(PDO::FETCH_ASSOC);
+ $stmt->closeCursor();
+ if ($row['label'] != $row_string['label']) {
+ printf("%s - STRINGIGY = %s, NATIVE = %s\n", $sql_type, var_export($row_string['label'], true), var_export($row['label'], true));
+ return false;
+ }
+
+ return true;
+ }
+
+ $db = MySQLPDOTest::factory();
+ $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
+ $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
+
+ $stmt = $db->prepare('SELECT @@sql_mode AS _mode');
+ $stmt->execute();
+ $row = $stmt->fetch(PDO::FETCH_ASSOC);
+ $real_as_float = (false === stristr($row['_mode'], "REAL_AS_FLOAT")) ? false : true;
+
+ test_type($db, 100, 'REAL ZEROFILL', -1.01, NULL, '/^[0]*0$/');
+ test_type($db, 110, 'REAL ZEROFILL', 1.01, NULL, ($real_as_float) ? '/^[0]*1\.0.*$/' : '/^[0]*1\.01$/');
+ test_type($db, 120, 'REAL UNSIGNED ZEROFILL', 1.01, NULL, ($real_as_float) ? '/^[0]*1\..*$/' : '/^[0]*1\.01$/');
+
+ test_type($db, 130, 'DOUBLE ZEROFILL', -1.01, NULL, '/^[0]*0$/');
+ test_type($db, 140, 'DOUBLE ZEROFILL', 1.01, NULL, '/^[0]*1\.01$/');
+ test_type($db, 150, 'DOUBLE UNSIGNED ZEROFILL', 1.01, NULL, '/^[0]*1\.01$/');
+
+ test_type($db, 160, 'FLOAT ZEROFILL', -1.01, NULL, '/^[0]*0$/');
+ test_type($db, 170, 'FLOAT ZEROFILL', 1, NULL, '/^[0]*1$/');
+ test_type($db, 180, 'FLOAT UNSIGNED ZEROFILL', -1, NULL, '/^[0]*0$/');
+
+ test_type($db, 190, 'DECIMAL ZEROFILL', -1.01, NULL, '/^[0]*0$/');
+ test_type($db, 200, 'DECIMAL ZEROFILL', 1.01, NULL, '/^[0]*1$/');
+ test_type($db, 210, 'DECIMAL UNSIGNED ZEROFILL', 1.01, NULL, '/^[0]*1$/');
+
+ test_type($db, 220, 'NUMERIC ZEROFILL', -1, NULL, '/^[0]*0$/');
+ test_type($db, 230, 'NUMERIC ZEROFILL', 1, NULL, '/^[0]*1$/');
+ test_type($db, 240, 'NUMERIC UNSIGNED ZEROFILL', 1.01, NULL, '/^[0]*1$/');
+
+ echo "done!\n";
?>
--CLEAN--
<?php
diff --git a/ext/pdo_mysql/tests/pecl_bug_5200.phpt b/ext/pdo_mysql/tests/pecl_bug_5200.phpt
index d44a5c2282..941dc7836e 100644
--- a/ext/pdo_mysql/tests/pecl_bug_5200.phpt
+++ b/ext/pdo_mysql/tests/pecl_bug_5200.phpt
@@ -15,7 +15,7 @@ $db = PDOTest::test_factory(__DIR__. '/common.phpt');
$db->exec("CREATE TABLE test (bar INT NOT NULL, phase enum('please_select', 'I', 'II', 'IIa', 'IIb', 'III', 'IV'))");
foreach ($db->query('DESCRIBE test phase')->fetchAll(PDO::FETCH_ASSOC) as $row) {
- print_r($row);
+ print_r($row);
}
?>
--CLEAN--
diff --git a/ext/pdo_mysql/tests/skipif.inc b/ext/pdo_mysql/tests/skipif.inc
index e503f55b3c..65c7f34fc6 100644
--- a/ext/pdo_mysql/tests/skipif.inc
+++ b/ext/pdo_mysql/tests/skipif.inc
@@ -1,3 +1,3 @@
<?php
if (!extension_loaded('pdo') || !extension_loaded('pdo_mysql'))
- die('skip PDO_MySQL driver not loaded');
+ die('skip PDO_MySQL driver not loaded');
diff --git a/ext/pdo_mysql/tests/table.inc b/ext/pdo_mysql/tests/table.inc
index 54bf14f07d..9ef8fac134 100644
--- a/ext/pdo_mysql/tests/table.inc
+++ b/ext/pdo_mysql/tests/table.inc
@@ -1,7 +1,7 @@
<?php
if (!$db) {
- require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
- $db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
+ require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+ $db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
}
// $db->exec('DROP TABLE IF EXISTS test');
$db->exec('CREATE TABLE test(id INT, label CHAR(1), PRIMARY KEY(id)) ENGINE=' . $engine);