gschlossnagle Wed Aug 31 00:06:11 2005 EDT
Modified files: (Branch: PHP_5_1)
/php-src/ext/pdo_mysql mysql_driver.c
Log:
MFH, fix 34072
http://cvs.php.net/diff.php/php-src/ext/pdo_mysql/mysql_driver.c?r1=1.59&r2=1.59.2.1&ty=u
Index: php-src/ext/pdo_mysql/mysql_driver.c
diff -u php-src/ext/pdo_mysql/mysql_driver.c:1.59
php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.1
--- php-src/ext/pdo_mysql/mysql_driver.c:1.59 Tue Jul 19 23:38:32 2005
+++ php-src/ext/pdo_mysql/mysql_driver.c Wed Aug 31 00:06:10 2005
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysql_driver.c,v 1.59 2005/07/20 03:38:32 iliaa Exp $ */
+/* $Id: mysql_driver.c,v 1.59.2.1 2005/08/31 04:06:10 gschlossnagle Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -188,6 +188,13 @@
if (mysql_stmt_prepare(S->stmt, sql, sql_len)) {
/* TODO: might need to pull statement specific info here? */
+ /* if the query isn't supported by the protocol, fallback to
emulation */
+ if (mysql_errno(H->server) == 1295) {
+ if (nsql) {
+ efree(nsql);
+ }
+ goto fallback;
+ }
pdo_mysql_error(dbh);
if (nsql) {
efree(nsql);
@@ -212,9 +219,9 @@
return 1;
-#else
- stmt->supports_placeholders = PDO_PLACEHOLDER_NONE;
+fallback:
#endif
+ stmt->supports_placeholders = PDO_PLACEHOLDER_NONE;
return 1;
}
@@ -388,7 +395,7 @@
#endif
;
- php_pdo_parse_data_source(dbh->data_source, dbh->data_source_len, vars,
4);
+ php_pdo_parse_data_source(dbh->data_source, dbh->data_source_len, vars,
5);
H = pecalloc(1, sizeof(pdo_mysql_db_handle), dbh->is_persistent);
@@ -415,14 +422,15 @@
goto cleanup;
}
}
-
+
+ dbname = vars[1].optval;
+ host = vars[2].optval;
+ if(vars[3].optval) {
+ port = atoi(vars[3].optval);
+ }
if (vars[2].optval && !strcmp("localhost", vars[2].optval)) {
unix_socket = vars[4].optval;
- } else {
- host = vars[2].optval;
- port = atoi(vars[3].optval);
}
- dbname = vars[1].optval;
if (mysql_real_connect(H->server, host, dbh->username, dbh->password,
dbname, port, unix_socket, connect_opts) == NULL) {
pdo_mysql_error(dbh);
goto cleanup;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php