diff options
author | Georg Richter <georg@php.net> | 2005-06-17 16:32:43 +0000 |
---|---|---|
committer | Georg Richter <georg@php.net> | 2005-06-17 16:32:43 +0000 |
commit | 15563f8d91c1f0e76e36eb59eec3a39b6793abb5 (patch) | |
tree | f286c287b61cb6dacde4df633d2744cb3021a5ab | |
parent | 987f6f8fcf5cd12ab0b005fbff4657d9be3f3dca (diff) | |
download | php-git-15563f8d91c1f0e76e36eb59eec3a39b6793abb5.tar.gz |
fix for bug #33263 (mysqli_real_escape doesn't work in __construct)
-rw-r--r-- | ext/mysqli/mysqli_api.c | 10 | ||||
-rw-r--r-- | ext/mysqli/tests/bug33263.phpt | 31 |
2 files changed, 39 insertions, 2 deletions
diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 2fc40bb6df..f41d858eb2 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -1030,7 +1030,13 @@ PHP_FUNCTION(mysqli_init) mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); mysqli_resource->ptr = (void *)mysql; - MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_link_class_entry); + + if (!getThis()) { + MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_link_class_entry); + } else { + ((mysqli_object *) zend_object_store_get_object(getThis() TSRMLS_CC))->ptr = mysqli_resource; + ((mysqli_object *) zend_object_store_get_object(getThis() TSRMLS_CC))->valid = 1; + } } /* }}} */ @@ -1743,7 +1749,7 @@ PHP_FUNCTION(mysqli_stmt_attr_set) ulong attr; int rc; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Olb", &mysql_stmt, mysqli_stmt_class_entry, &attr, &mode) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oll", &mysql_stmt, mysqli_stmt_class_entry, &attr, &mode) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt"); diff --git a/ext/mysqli/tests/bug33263.phpt b/ext/mysqli/tests/bug33263.phpt new file mode 100644 index 0000000000..44f9167c95 --- /dev/null +++ b/ext/mysqli/tests/bug33263.phpt @@ -0,0 +1,31 @@ +--TEST-- +bug #33263 (mysqli_real_connect in __construct) +--SKIPIF-- +<?php require_once('skipif.inc'); ?> +--FILE-- +<?php + + include "connect.inc"; + + class test extends mysqli + { + public function __construct($host, $user, $passwd, $db) { + parent::init(); + parent::real_connect($host, $user, $passwd, $db); + } + } + + $mysql = new test($host, $user, $passwd, "test"); + + $stmt = $mysql->prepare("SELECT DATABASE()"); + $stmt->execute(); + $stmt->bind_result($db); + $stmt->fetch(); + $stmt->close(); + + var_dump($db); + + $mysql->close(); +?> +--EXPECT-- +string(4) "test" |