summaryrefslogtreecommitdiff
path: root/ext/mysqli/mysqli_nonapi.c
diff options
context:
space:
mode:
authorGeorg Richter <georg@php.net>2004-06-05 18:31:56 +0000
committerGeorg Richter <georg@php.net>2004-06-05 18:31:56 +0000
commit93bf6517df01e35965db35a14312a7a24fde4442 (patch)
tree912cd550e7557b7e43ad71bc4f97709699f687f3 /ext/mysqli/mysqli_nonapi.c
parent120625548d407eea7e633b8a8c28a83b7a4595d3 (diff)
downloadphp-git-93bf6517df01e35965db35a14312a7a24fde4442.tar.gz
Major changes for 4.1.2-alpha/4.1.3-beta:
- added container for mysql structure - added load data infile callback functions (currently disabled under win) Bug fixes: - fixed property changes (4.1.1 -> 4.1.2) - fixed memleak in mysqli_connect - fixed bug #28100 - fixed bug #28205 - fixed bug #28430
Diffstat (limited to 'ext/mysqli/mysqli_nonapi.c')
-rw-r--r--ext/mysqli/mysqli_nonapi.c66
1 files changed, 39 insertions, 27 deletions
diff --git a/ext/mysqli/mysqli_nonapi.c b/ext/mysqli/mysqli_nonapi.c
index 347cee7295..053e1421e8 100644
--- a/ext/mysqli/mysqli_nonapi.c
+++ b/ext/mysqli/mysqli_nonapi.c
@@ -33,7 +33,7 @@
Open a connection to a mysql server */
PHP_FUNCTION(mysqli_connect)
{
- MYSQL *mysql = NULL;
+ MY_MYSQL *mysql;
MYSQLI_RESOURCE *mysqli_resource;
zval *object = getThis();
char *hostname = NULL, *username=NULL, *passwd=NULL, *dbname=NULL, *socket=NULL;
@@ -64,26 +64,31 @@ PHP_FUNCTION(mysqli_connect)
}
}
- mysql = mysql_init(NULL);
+ mysql = (MY_MYSQL *)calloc(1, sizeof(MY_MYSQL));
- if (mysql_real_connect(mysql,hostname,username,passwd,dbname,port,socket,0) == NULL) {
+ if (!(mysql->mysql = mysql_init(NULL))) {
+ efree(mysql);
+ RETURN_FALSE;
+ }
+
+ if (mysql_real_connect(mysql->mysql,hostname,username,passwd,dbname,port,socket,0) == NULL) {
/* Save error messages */
- MYSQLI_REPORT_MYSQL_ERROR(mysql);
- php_mysqli_set_error(mysql_errno(mysql), (char *) mysql_error(mysql) TSRMLS_CC);
+ MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
+ php_mysqli_set_error(mysql_errno(mysql->mysql), (char *) mysql_error(mysql->mysql) TSRMLS_CC);
if (!(MyG(report_mode) & MYSQLI_REPORT_ERROR)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", mysql_error(mysql));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", mysql_error(mysql->mysql));
}
/* free mysql structure */
- mysql_close(mysql);
+ mysql_close(mysql->mysql);
RETURN_FALSE;
}
/* clear error */
- php_mysqli_set_error(mysql_errno(mysql), (char *) mysql_error(mysql) TSRMLS_CC);
+ php_mysqli_set_error(mysql_errno(mysql->mysql), (char *) mysql_error(mysql->mysql) TSRMLS_CC);
- mysql->reconnect = MyG(reconnect);
+ mysql->mysql->reconnect = MyG(reconnect);
mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));
mysqli_resource->ptr = (void *)mysql;
@@ -102,7 +107,7 @@ PHP_FUNCTION(mysqli_connect)
Open a connection to a embedded mysql server */
PHP_FUNCTION(mysqli_embedded_connect)
{
- MYSQL *mysql;
+ MY_MYSQL *mysql;
MYSQLI_RESOURCE *mysqli_resource;
zval *object = getThis();
char *dbname = NULL;
@@ -117,21 +122,27 @@ PHP_FUNCTION(mysqli_embedded_connect)
return;
}
- mysql = mysql_init(NULL);
+ mysql = (MY_MYSQL *) calloc(1, sizeof(MY_MYSQL));
+
+ if (!(mysql = mysql_init(NULL))) {
+ efree(mysql);
+ RETURN_FALSE;
+ }
if (mysql_real_connect(mysql, NULL, NULL, NULL, dbname, 0, NULL, 0) == NULL) {
- MYSQLI_REPORT_MYSQL_ERROR(mysql);
- php_mysqli_set_error(mysql_errno(mysql), (char *) mysql_error(mysql) TSRMLS_CC);
+ MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
+ php_mysqli_set_error(mysql_errno(mysql->mysql), (char *) mysql_error(mysql->mysql) TSRMLS_CC);
if (!(MyG(report_mode) & MYSQLI_REPORT_ERROR)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", mysql_error(mysql));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", mysql_error(mysql->mysql));
}
/* free mysql structure */
- mysql_close(mysql);
+ mysql_close(mysql->mysql);
+ efree(mysql);
RETURN_FALSE;
}
- php_mysqli_set_error(mysql_errno(mysql), (char *) mysql_error(mysql) TSRMLS_CC);
+ php_mysqli_set_error(mysql_errno(mysql->mysql), (char *) mysql_error(mysql->mysql) TSRMLS_CC);
mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));
mysqli_resource->ptr = (void *)mysql;
@@ -193,7 +204,7 @@ PHP_FUNCTION(mysqli_fetch_object)
Binary-safe version of mysql_query() */
PHP_FUNCTION(mysqli_multi_query)
{
- MYSQL *mysql;
+ MY_MYSQL *mysql;
zval *mysql_link;
char *query = NULL;
unsigned int query_len;
@@ -201,11 +212,12 @@ PHP_FUNCTION(mysqli_multi_query)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_link, mysqli_link_class_entry, &query, &query_len) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
MYSQLI_ENABLE_MQ;
- if (mysql_real_query(mysql, query, query_len)) {
+ if (mysql_real_query(mysql->mysql, query, query_len)) {
MYSQLI_DISABLE_MQ;
+ MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
RETURN_FALSE;
}
RETURN_TRUE;
@@ -215,7 +227,7 @@ PHP_FUNCTION(mysqli_multi_query)
/* {{{ proto mixed mysqli_query(object link, string query [,int resultmode]) */
PHP_FUNCTION(mysqli_query)
{
- MYSQL *mysql;
+ MY_MYSQL *mysql;
zval *mysql_link;
MYSQLI_RESOURCE *mysqli_resource;
MYSQL_RES *result;
@@ -226,31 +238,31 @@ PHP_FUNCTION(mysqli_query)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os|l", &mysql_link, mysqli_link_class_entry, &query, &query_len, &resultmode) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MYSQL*, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, "mysqli_link");
MYSQLI_DISABLE_MQ;
- if (mysql_real_query(mysql, query, query_len)) {
- MYSQLI_REPORT_MYSQL_ERROR(mysql);
+ if (mysql_real_query(mysql->mysql, query, query_len)) {
+ MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
RETURN_FALSE;
}
- if (!mysql_field_count(mysql)) {
+ if (!mysql_field_count(mysql->mysql)) {
if (MyG(report_mode) & MYSQLI_REPORT_INDEX) {
- php_mysqli_report_index(query, mysql->server_status TSRMLS_CC);
+ php_mysqli_report_index(query, mysql->mysql->server_status TSRMLS_CC);
}
RETURN_TRUE;
}
- result = (resultmode == MYSQLI_USE_RESULT) ? mysql_use_result(mysql) : mysql_store_result(mysql);
+ result = (resultmode == MYSQLI_USE_RESULT) ? mysql_use_result(mysql->mysql) : mysql_store_result(mysql->mysql);
if (!result) {
RETURN_FALSE;
}
if (MyG(report_mode) & MYSQLI_REPORT_INDEX) {
- php_mysqli_report_index(query, mysql->server_status TSRMLS_CC);
+ php_mysqli_report_index(query, mysql->mysql->server_status TSRMLS_CC);
}
mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));