summaryrefslogtreecommitdiff
path: root/ext/mysql/php_mysql.c
diff options
context:
space:
mode:
authorJohannes Schlüter <johannes@php.net>2011-08-31 20:30:08 +0000
committerJohannes Schlüter <johannes@php.net>2011-08-31 20:30:08 +0000
commit7d25510b1b0cb0710e884483efcb9ef1fe8a4927 (patch)
tree997fa7be057db8413226deebb5932336c4a35205 /ext/mysql/php_mysql.c
parent86b563ea0fda8903d23624ba1617ff5dd7645d3b (diff)
downloadphp-git-7d25510b1b0cb0710e884483efcb9ef1fe8a4927.tar.gz
- Register extensions using mysqlnd (mysql, myslqi, pdo_mysql) with mysqlnd
Diffstat (limited to 'ext/mysql/php_mysql.c')
-rw-r--r--ext/mysql/php_mysql.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/ext/mysql/php_mysql.c b/ext/mysql/php_mysql.c
index 3f9a7d653a..89fe7b15ff 100644
--- a/ext/mysql/php_mysql.c
+++ b/ext/mysql/php_mysql.c
@@ -529,6 +529,31 @@ static PHP_GINIT_FUNCTION(mysql)
}
/* }}} */
+#ifdef MYSQL_USE_MYSQLND
+static MYSQLND *mysql_convert_zv_to_mysqlnd(zval *zv)
+{
+ php_mysql_conn *mysql;
+
+ if (Z_TYPE_P(zv) != IS_RESOURCE) {
+ /* Might be nicer to check resource type, too, but ext/mysql is the only one using resources so emitting an error is not to bad, while usually this hook should be silent */
+ return NULL;
+ }
+
+ mysql = (php_mysql_conn *)zend_fetch_resource(&zv TSRMLS_CC, -1, "MySQL-Link", NULL, 2, le_link, le_plink);
+
+ if (!mysql) {
+ return NULL;
+ }
+
+ return mysql->conn;
+}
+
+static mysqlnd_api_extension_t mysqlnd_api_ext = {
+ &mysql_module_entry,
+ mysql_convert_zv_to_mysqlnd
+};
+#endif
+
/* {{{ PHP_MINIT_FUNCTION
*/
ZEND_MODULE_STARTUP_D(mysql)
@@ -557,6 +582,10 @@ ZEND_MODULE_STARTUP_D(mysql)
#endif
#endif
+#ifdef MYSQL_USE_MYSQLND
+ mysqlnd_register_api_extension(&mysqlnd_api_ext);
+#endif
+
return SUCCESS;
}
/* }}} */