summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/mysqli/mysqli.c12
-rw-r--r--ext/mysqli/mysqli_fe.c2
-rw-r--r--ext/mysqli/tests/003.phpt4
-rw-r--r--ext/mysqli/tests/006.phpt1
-rw-r--r--ext/mysqli/tests/007.phpt1
-rw-r--r--ext/mysqli/tests/008.phpt1
-rw-r--r--ext/mysqli/tests/009.phpt3
-rw-r--r--ext/mysqli/tests/010.phpt1
-rw-r--r--ext/mysqli/tests/020.phpt1
-rw-r--r--ext/mysqli/tests/023.phpt1
-rw-r--r--ext/mysqli/tests/024.phpt1
-rw-r--r--ext/mysqli/tests/025.phpt1
-rw-r--r--ext/mysqli/tests/026.phpt1
-rw-r--r--ext/mysqli/tests/042.phpt1
-rw-r--r--ext/mysqli/tests/060.phpt1
-rw-r--r--ext/mysqli/tests/065.phpt1
-rw-r--r--ext/mysqli/tests/bug32405.phpt1
-rw-r--r--ext/mysqli/tests/bug34785.phpt47
18 files changed, 71 insertions, 10 deletions
diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c
index ce7b12dcd5..436cc3ccef 100644
--- a/ext/mysqli/mysqli.c
+++ b/ext/mysqli/mysqli.c
@@ -143,25 +143,23 @@ static void mysqli_objects_destroy_object(void *object, zend_object_handle handl
if (instanceof_function(intern->zo.ce, mysqli_link_class_entry TSRMLS_CC)) {
if (my_res && my_res->ptr) {
MY_MYSQL *mysql = (MY_MYSQL *)my_res->ptr;
-
if (mysql->mysql) {
mysql_close(mysql->mysql);
}
-
php_clear_mysql(mysql);
efree(mysql);
-
my_res->ptr = NULL;
}
- } else if (intern->zo.ce == mysqli_stmt_class_entry) { /* stmt object */
+ } else if (instanceof_function(intern->zo.ce, mysqli_stmt_class_entry TSRMLS_CC)) { /* stmt object */
if (my_res && my_res->ptr) {
- php_clear_stmt_bind((MY_STMT *)my_res->ptr);
+ MY_STMT *stmt = (MY_STMT *)my_res->ptr;
+ php_clear_stmt_bind(stmt);
}
- } else if (intern->zo.ce == mysqli_result_class_entry) { /* result object */
+ } else if (instanceof_function(intern->zo.ce, mysqli_result_class_entry TSRMLS_CC)) { /* stmt object */
if (my_res && my_res->ptr) {
mysql_free_result(my_res->ptr);
}
- } else if (intern->zo.ce == mysqli_warning_class_entry) { /* warning object */
+ } else if (instanceof_function(intern->zo.ce, mysqli_warning_class_entry TSRMLS_CC)) { /* stmt object */
if (my_res && my_res->ptr) {
php_clear_warnings((MYSQLI_WARNING *)my_res->info);
}
diff --git a/ext/mysqli/mysqli_fe.c b/ext/mysqli/mysqli_fe.c
index 043d74f262..49fe2380c8 100644
--- a/ext/mysqli/mysqli_fe.c
+++ b/ext/mysqli/mysqli_fe.c
@@ -244,6 +244,7 @@ function_entry mysqli_link_methods[] = {
* Every user visible function must have an entry in mysqli_result_functions[].
*/
function_entry mysqli_result_methods[] = {
+ PHP_FALIAS(mysqli_result, mysqli_result_construct, NULL)
PHP_FALIAS(close,mysqli_free_result,NULL)
PHP_FALIAS(free,mysqli_free_result,NULL)
PHP_FALIAS(data_seek,mysqli_data_seek,NULL)
@@ -266,6 +267,7 @@ function_entry mysqli_result_methods[] = {
* Every user visible function must have an entry in mysqli_stmt_functions[].
*/
function_entry mysqli_stmt_methods[] = {
+ PHP_FALIAS(mysqli_stmt, mysqli_stmt_construct, NULL)
PHP_FALIAS(attr_get,mysqli_stmt_attr_get,NULL)
PHP_FALIAS(attr_set,mysqli_stmt_attr_set,NULL)
PHP_FALIAS(bind_param,mysqli_stmt_bind_param,second_arg_force_by_ref_rest)
diff --git a/ext/mysqli/tests/003.phpt b/ext/mysqli/tests/003.phpt
index d043dc7724..28aedb032c 100644
--- a/ext/mysqli/tests/003.phpt
+++ b/ext/mysqli/tests/003.phpt
@@ -7,9 +7,9 @@ mysqli connect
include "connect.inc";
/*** test mysqli_connect 127.0.0.1 ***/
- $link = mysqli_connect($host, $user, $passwd);
+ $link = mysqli_connect($host, $user, $passwd, "test");
- mysqli_select_db($link, "test");
+ mysqli_query($link, "SET sql_mode=''");
mysqli_query($link,"DROP TABLE IF EXISTS test_bind_result");
mysqli_query($link,"CREATE TABLE test_bind_result(c1 date, c2 time,
diff --git a/ext/mysqli/tests/006.phpt b/ext/mysqli/tests/006.phpt
index 4b495cc594..a53ad7a547 100644
--- a/ext/mysqli/tests/006.phpt
+++ b/ext/mysqli/tests/006.phpt
@@ -10,6 +10,7 @@ mysqli fetch long values
$link = mysqli_connect($host, $user, $passwd);
mysqli_select_db($link, "test");
+ mysqli_query($link, "SET sql_mode=''");
mysqli_query($link,"DROP TABLE IF EXISTS test_bind_fetch");
mysqli_query($link,"CREATE TABLE test_bind_fetch(c1 int unsigned,
diff --git a/ext/mysqli/tests/007.phpt b/ext/mysqli/tests/007.phpt
index 503863bdc2..cb32033cca 100644
--- a/ext/mysqli/tests/007.phpt
+++ b/ext/mysqli/tests/007.phpt
@@ -10,6 +10,7 @@ mysqli fetch short values
$link = mysqli_connect($host, $user, $passwd);
mysqli_select_db($link, "test");
+ mysqli_query($link, "SET sql_mode=''");
mysqli_query($link,"DROP TABLE IF EXISTS test_bind_fetch");
mysqli_query($link,"CREATE TABLE test_bind_fetch(c1 smallint unsigned,
diff --git a/ext/mysqli/tests/008.phpt b/ext/mysqli/tests/008.phpt
index 12311d621b..9fc01b8adf 100644
--- a/ext/mysqli/tests/008.phpt
+++ b/ext/mysqli/tests/008.phpt
@@ -10,6 +10,7 @@ mysqli fetch tinyint values
$link = mysqli_connect($host, $user, $passwd);
mysqli_select_db($link, "test");
+ mysqli_query($link, "SET sql_mode=''");
mysqli_query($link,"DROP TABLE IF EXISTS test_bind_fetch");
mysqli_query($link,"CREATE TABLE test_bind_fetch(c1 tinyint,
diff --git a/ext/mysqli/tests/009.phpt b/ext/mysqli/tests/009.phpt
index 091313870f..0647a8e140 100644
--- a/ext/mysqli/tests/009.phpt
+++ b/ext/mysqli/tests/009.phpt
@@ -16,6 +16,7 @@ mysqli fetch bigint values
$link = mysqli_connect($host, $user, $passwd);
mysqli_select_db($link, "test");
+ mysqli_query($link, "SET sql_mode=''");
mysqli_query($link,"DROP TABLE IF EXISTS test_bind_fetch");
mysqli_query($link,"CREATE TABLE test_bind_fetch(c1 bigint default 5,
@@ -53,7 +54,7 @@ array(7) {
[4]=>
int(0)
[5]=>
- string(13) "-333333333333"
+ int(0)
[6]=>
int(100)
}
diff --git a/ext/mysqli/tests/010.phpt b/ext/mysqli/tests/010.phpt
index 0d74bed501..6b79d62f42 100644
--- a/ext/mysqli/tests/010.phpt
+++ b/ext/mysqli/tests/010.phpt
@@ -12,6 +12,7 @@ precision=12
$link = mysqli_connect($host, $user, $passwd);
mysqli_select_db($link, "test");
+ mysqli_query($link, "SET sql_mode=''");
mysqli_query($link,"DROP TABLE IF EXISTS test_bind_fetch");
diff --git a/ext/mysqli/tests/020.phpt b/ext/mysqli/tests/020.phpt
index 85834c52af..4ae140f620 100644
--- a/ext/mysqli/tests/020.phpt
+++ b/ext/mysqli/tests/020.phpt
@@ -10,6 +10,7 @@ mysqli bind_param/bind_result date
$link = mysqli_connect($host, $user, $passwd);
mysqli_select_db($link, "test");
+ mysqli_query($link, "SET sql_mode=''");
mysqli_query($link,"DROP TABLE IF EXISTS test_bind_result");
mysqli_query($link,"CREATE TABLE test_bind_result(c1 date, c2 time,
diff --git a/ext/mysqli/tests/023.phpt b/ext/mysqli/tests/023.phpt
index 69e9b20858..24a717a6eb 100644
--- a/ext/mysqli/tests/023.phpt
+++ b/ext/mysqli/tests/023.phpt
@@ -10,6 +10,7 @@ mysqli bind_param/bind_prepare fetch long values
$link = mysqli_connect($host, $user, $passwd);
mysqli_select_db($link, "test");
+ mysqli_query($link, "SET sql_mode=''");
mysqli_query($link,"DROP TABLE IF EXISTS test_bind_fetch");
mysqli_query($link,"CREATE TABLE test_bind_fetch(c1 int unsigned,
diff --git a/ext/mysqli/tests/024.phpt b/ext/mysqli/tests/024.phpt
index c6d6cd7e70..f0d0a6407a 100644
--- a/ext/mysqli/tests/024.phpt
+++ b/ext/mysqli/tests/024.phpt
@@ -10,6 +10,7 @@ mysqli bind_param/bind_result short values
$link = mysqli_connect($host, $user, $passwd);
mysqli_select_db($link, "test");
+ mysqli_query($link, "SET sql_mode=''");
mysqli_query($link,"DROP TABLE IF EXISTS test_bind_fetch");
mysqli_query($link,"CREATE TABLE test_bind_fetch(c1 smallint unsigned,
diff --git a/ext/mysqli/tests/025.phpt b/ext/mysqli/tests/025.phpt
index 85ff0fa29f..f3338cf467 100644
--- a/ext/mysqli/tests/025.phpt
+++ b/ext/mysqli/tests/025.phpt
@@ -10,6 +10,7 @@ mysqli bind_param/bind_result tinyint values
$link = mysqli_connect($host, $user, $passwd);
mysqli_select_db($link, "test");
+ mysqli_query($link, "SET sql_mode=''");
mysqli_query($link,"DROP TABLE IF EXISTS test_bind_fetch");
mysqli_query($link,"CREATE TABLE test_bind_fetch(c1 tinyint,
diff --git a/ext/mysqli/tests/026.phpt b/ext/mysqli/tests/026.phpt
index 0f9e882608..d38e3c1807 100644
--- a/ext/mysqli/tests/026.phpt
+++ b/ext/mysqli/tests/026.phpt
@@ -10,6 +10,7 @@ mysqli bind_param/bind_result with send_long_data
$link = mysqli_connect($host, $user, $passwd);
mysqli_select_db($link, "test");
+ mysqli_query($link, "SET sql_mode=''");
mysqli_query($link,"DROP TABLE IF EXISTS test_bind_fetch");
mysqli_query($link,"CREATE TABLE test_bind_fetch(c1 varchar(10), c2 text)");
diff --git a/ext/mysqli/tests/042.phpt b/ext/mysqli/tests/042.phpt
index fe6d23e172..719e24925d 100644
--- a/ext/mysqli/tests/042.phpt
+++ b/ext/mysqli/tests/042.phpt
@@ -10,6 +10,7 @@ mysqli_fetch_object
$link = mysqli_connect($host, $user, $passwd);
mysqli_select_db($link, "test");
+ mysqli_query($link, "SET sql_mode=''");
mysqli_query($link,"DROP TABLE IF EXISTS test_bind_fetch");
mysqli_query($link,"CREATE TABLE test_bind_fetch(c1 smallint unsigned,
diff --git a/ext/mysqli/tests/060.phpt b/ext/mysqli/tests/060.phpt
index 875130dc55..ba6c231c57 100644
--- a/ext/mysqli/tests/060.phpt
+++ b/ext/mysqli/tests/060.phpt
@@ -16,6 +16,7 @@ mysqli_fetch_object with classes
$link = mysqli_connect($host, $user, $passwd);
mysqli_select_db($link, "test");
+ mysqli_query($link, "SET sql_mode=''");
mysqli_query($link,"DROP TABLE IF EXISTS test_fetch");
mysqli_query($link,"CREATE TABLE test_fetch(c1 smallint unsigned,
diff --git a/ext/mysqli/tests/065.phpt b/ext/mysqli/tests/065.phpt
index d0fa071169..09ee886ec5 100644
--- a/ext/mysqli/tests/065.phpt
+++ b/ext/mysqli/tests/065.phpt
@@ -12,6 +12,7 @@ if (!function_exists('mysqli_set_charset')) {
include "connect.inc";
$mysql = new mysqli($host, $user, $passwd);
+ mysqli_query($mysql, "SET sql_mode=''");
$esc_str = chr(0xbf) . chr(0x5c);
diff --git a/ext/mysqli/tests/bug32405.phpt b/ext/mysqli/tests/bug32405.phpt
index 9b58e3611b..f805dc7982 100644
--- a/ext/mysqli/tests/bug32405.phpt
+++ b/ext/mysqli/tests/bug32405.phpt
@@ -9,6 +9,7 @@ Bug #32405
/*** test mysqli_connect 127.0.0.1 ***/
$link = mysqli_connect($host, $user, $passwd);
mysqli_select_db($link, "test");
+ mysqli_query($link, "SET sql_mode=''");
/* two fields are needed. the problem does not occur with 1 field only selected. */
$link->query("CREATE TABLE test_users(user_id int(10) unsigned NOT NULL auto_increment, login varchar(50) default '', PRIMARY KEY (user_id))");
diff --git a/ext/mysqli/tests/bug34785.phpt b/ext/mysqli/tests/bug34785.phpt
new file mode 100644
index 0000000000..a2b9f22881
--- /dev/null
+++ b/ext/mysqli/tests/bug34785.phpt
@@ -0,0 +1,47 @@
+--TEST--
+Bug #32405
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+ include ("connect.inc");
+
+ class my_stmt extends mysqli_stmt
+ {
+ public function __construct($link, $query) {
+ parent::__construct($link, $query);
+ }
+ }
+
+ class my_result extends mysqli_result
+ {
+ public function __construct($link, $query) {
+ parent::__construct($link, $query);
+ }
+ }
+
+ /*** test mysqli_connect 127.0.0.1 ***/
+ $link = mysqli_connect($host, $user, $passwd);
+ mysqli_query($link, "SET sql_mode=''");
+
+ $stmt = new my_stmt($link, "SELECT 'foo' FROM DUAL");
+
+ $stmt->execute();
+ $stmt->bind_result($var);
+ $stmt->fetch();
+
+ $stmt->close();
+ var_dump($var);
+
+ mysqli_real_query($link, "SELECT 'bar' FROM DUAL");
+ $result = new my_result($link, MYSQLI_STORE_RESULT);
+ $row = $result->fetch_row();
+ $result->close();
+
+ var_dump($row[0]);
+
+ mysqli_close($link);
+?>
+--EXPECT--
+string(3) "foo"
+string(3) "bar"