[prev in list] [next in list] [prev in thread] [next in thread] 

List:       php-cvs
Subject:    [PHP-CVS] cvs: php-src(PHP_5_1) /ext/pdo_mysql mysql_driver.c
From:       "George Schlossnagle" <gschlossnagle () php ! net>
Date:       2005-08-31 4:06:11
Message-ID: cvsgschlossnagle1125461171 () cvsserver
[Download RAW message or body]

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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic