]> granicus.if.org Git - php/commitdiff
strictly check the result of mysql_affected_rows()
authorAndrey Hristov <andrey@php.net>
Tue, 12 Jul 2005 19:22:05 +0000 (19:22 +0000)
committerAndrey Hristov <andrey@php.net>
Tue, 12 Jul 2005 19:22:05 +0000 (19:22 +0000)
ext/pdo_mysql/mysql_driver.c
ext/pdo_mysql/mysql_statement.c

index b57599c322a066d11bb380fd13b755e52dd5bcc9..08b44298804a5eeec3b185c18e2f02f80cc696d6 100755 (executable)
@@ -225,7 +225,8 @@ static long mysql_handle_doer(pdo_dbh_t *dbh, const char *sql, long sql_len TSRM
                pdo_mysql_error(dbh);
                return -1;
        } else {
-               return mysql_affected_rows(H->server);
+               my_ulonglong c= mysql_affected_rows(H->server);
+               return c != (my_ulonglong)-1 ? c:-1; 
        }
 }
 
index 0051313b71f1ecbd5a554030cd990b71ffe9f96b..6527496e7516ccd55c54322a2556de6391b03d63 100755 (executable)
@@ -155,9 +155,12 @@ static int pdo_mysql_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC)
                        }
                }
 
-               
-               stmt->row_count = mysql_stmt_affected_rows(S->stmt);
-               return 1;
+               ;
+               if ((row_count= mysql_stmt_affected_rows(S->stmt)) != (my_ulonglong)-1) {
+                       stmt->row_count = row_count;
+                       return 1;
+               }
+               return 0;
        }
 #endif
        /* ensure that we free any previous unfetched results */
@@ -222,7 +225,11 @@ static int pdo_mysql_stmt_next_rowset(pdo_stmt_t *stmt TSRMLS_DC)
                /* No more results */
                return 0;
        } else {
-               row_count = mysql_affected_rows(H->server);
+               if ((my_ulonglong)-1 == (row_count = mysql_affected_rows(H->server))) {
+                       pdo_mysql_error_stmt(stmt);
+                       return 0;
+               }
+               
                if (!H->buffered) {
                        S->result = mysql_use_result(H->server);
                } else {