summaryrefslogtreecommitdiff
path: root/ext/mysql/php_mysql.c
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2001-03-13 21:42:43 +0000
committerZeev Suraski <zeev@php.net>2001-03-13 21:42:43 +0000
commitfdf21452ed0d525de0d21b9009ea6bc38182f0aa (patch)
tree91129fbc96570ed0069c321d0f2bb47b05d8ac52 /ext/mysql/php_mysql.c
parentf5ddc2826d3a3c443fcb2e0e5a8bfb02db6284ab (diff)
downloadphp-git-fdf21452ed0d525de0d21b9009ea6bc38182f0aa.tar.gz
Centralize query code
Diffstat (limited to 'ext/mysql/php_mysql.c')
-rw-r--r--ext/mysql/php_mysql.c123
1 files changed, 51 insertions, 72 deletions
diff --git a/ext/mysql/php_mysql.c b/ext/mysql/php_mysql.c
index 53501a11b0..7956ad05e5 100644
--- a/ext/mysql/php_mysql.c
+++ b/ext/mysql/php_mysql.c
@@ -102,6 +102,7 @@ static int le_result, le_link, le_plink;
typedef struct _php_mysql_conn {
MYSQL conn;
+ MYSQL_RES *active_result;
} php_mysql_conn;
@@ -898,17 +899,61 @@ PHP_FUNCTION(mysql_drop_db)
/* }}} */
+
+
+static void php_mysql_do_query(zval **query, zval **mysql_link, int link_id, zval **db, int use_store, zval *return_value)
+{
+ php_mysql_conn *mysql;
+ MYSQL_RES *mysql_result;
+ MySLS_FETCH();
+
+ ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, link_id, "MySQL-Link", le_link, le_plink);
+
+ if (db) {
+ convert_to_string_ex(db);
+ if (mysql_select_db(&mysql->conn, (*db)->value.str.val)!=0) {
+ RETURN_FALSE;
+ }
+ }
+
+ convert_to_string_ex(query);
+ /* mysql_query is binary unsafe, use mysql_real_query */
+#if MYSQL_VERSION_ID > 32199
+ if (mysql_real_query(&mysql->conn, (*query)->value.str.val, (*query)->value.str.len)!=0) {
+ RETURN_FALSE;
+ }
+#else
+ if (mysql_query(&mysql->conn, (*query)->value.str.val)!=0) {
+ RETURN_FALSE;
+ }
+#endif
+ if(use_store == MYSQL_USE_RESULT) {
+ mysql_result=mysql_use_result(&mysql->conn);
+ } else {
+ mysql_result=mysql_store_result(&mysql->conn);
+ }
+ if (!mysql_result) {
+ if (PHP_MYSQL_VALID_RESULT(&mysql->conn)) { /* query should have returned rows */
+ php_error(E_WARNING, "MySQL: Unable to save result set");
+ RETURN_FALSE;
+ } else {
+ RETURN_TRUE;
+ }
+ }
+ ZEND_REGISTER_RESOURCE(return_value, mysql_result, le_result);
+}
+
+
+
+
+
/* {{{ proto int mysql_query(string query [, int link_identifier] [, int result_mode])
Send an SQL query to MySQL */
PHP_FUNCTION(mysql_query)
{
zval **query, **mysql_link;
-#if 0
zval **store_result;
-#endif
int id, use_store=MYSQL_STORE_RESULT;
- php_mysql_conn *mysql;
- MYSQL_RES *mysql_result;
MySLS_FETCH();
switch(ZEND_NUM_ARGS()) {
@@ -925,7 +970,6 @@ PHP_FUNCTION(mysql_query)
}
id = -1;
break;
-#if 0 /* need to work more on the mysql_store_result() approach */
case 3:
if(zend_get_parameters_ex(3, &query, &mysql_link, &store_result)==FAILURE) {
RETURN_FALSE;
@@ -936,39 +980,11 @@ PHP_FUNCTION(mysql_query)
}
id = -1;
break;
-#endif
default:
WRONG_PARAM_COUNT;
break;
}
-
- ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink);
-
- convert_to_string_ex(query);
- /* mysql_query binary unsafe, use mysql_real_query */
-#if MYSQL_VERSION_ID > 32199
- if (mysql_real_query(&mysql->conn, (*query)->value.str.val, (*query)->value.str.len)!=0) {
- RETURN_FALSE;
- }
-#else
- if (mysql_query(&mysql->conn, (*query)->value.str.val)!=0) {
- RETURN_FALSE;
- }
-#endif
- if(use_store == MYSQL_USE_RESULT) {
- mysql_result=mysql_use_result(&mysql->conn);
- } else {
- mysql_result=mysql_store_result(&mysql->conn);
- }
- if (!mysql_result) {
- if (PHP_MYSQL_VALID_RESULT(&mysql->conn)) { /* query should have returned rows */
- php_error(E_WARNING, "MySQL: Unable to save result set");
- RETURN_FALSE;
- } else {
- RETURN_TRUE;
- }
- }
- ZEND_REGISTER_RESOURCE(return_value, mysql_result, le_result);
+ php_mysql_do_query(query, mysql_link, id, NULL, use_store, return_value);
}
/* }}} */
@@ -978,12 +994,8 @@ PHP_FUNCTION(mysql_query)
PHP_FUNCTION(mysql_db_query)
{
zval **db, **query, **mysql_link;
-#if 0
zval **store_result;
-#endif
int id, use_store=MYSQL_STORE_RESULT;
- php_mysql_conn *mysql;
- MYSQL_RES *mysql_result;
MySLS_FETCH();
switch(ZEND_NUM_ARGS()) {
@@ -1000,7 +1012,6 @@ PHP_FUNCTION(mysql_db_query)
}
id = -1;
break;
-#if 0
case 4:
if(zend_get_parameters_ex(4, &db, &query, &mysql_link, &store_result)==FAILURE) {
RETURN_FALSE;
@@ -1011,44 +1022,12 @@ PHP_FUNCTION(mysql_db_query)
}
id = -1;
break;
-#endif
default:
WRONG_PARAM_COUNT;
break;
}
- ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink);
-
- convert_to_string_ex(db);
- if (mysql_select_db(&mysql->conn, (*db)->value.str.val)!=0) {
- RETURN_FALSE;
- }
-
- convert_to_string_ex(query);
- /* mysql_query is binary unsafe, use mysql_real_query */
-#if MYSQL_VERSION_ID > 32199
- if (mysql_real_query(&mysql->conn, (*query)->value.str.val, (*query)->value.str.len)!=0) {
- RETURN_FALSE;
- }
-#else
- if (mysql_query(&mysql->conn, (*query)->value.str.val)!=0) {
- RETURN_FALSE;
- }
-#endif
- if(use_store == MYSQL_USE_RESULT) {
- mysql_result=mysql_use_result(&mysql->conn);
- } else {
- mysql_result=mysql_store_result(&mysql->conn);
- }
- if (!mysql_result) {
- if (PHP_MYSQL_VALID_RESULT(&mysql->conn)) { /* query should have returned rows */
- php_error(E_WARNING, "MySQL: Unable to save result set");
- RETURN_FALSE;
- } else {
- RETURN_TRUE;
- }
- }
- ZEND_REGISTER_RESOURCE(return_value, mysql_result, le_result);
+ php_mysql_do_query(query, mysql_link, id, db, use_store, return_value);
}
/* }}} */