]> granicus.if.org Git - php/commitdiff
Make prepared statements obey buffering flag in MySQL.
authorIlia Alshanetsky <iliaa@php.net>
Thu, 7 Jul 2005 17:53:34 +0000 (17:53 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Thu, 7 Jul 2005 17:53:34 +0000 (17:53 +0000)
ext/pdo_mysql/mysql_statement.c

index c59f53c8dbc8f903f46cacac26e02b525aeae8db..35cfa4639ccb6796f8911114c0ad51b409210f5d 100755 (executable)
@@ -98,6 +98,10 @@ static int pdo_mysql_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC)
                                S->fields = mysql_fetch_fields(S->result);
                                stmt->column_count = (int)mysql_num_fields(S->result);
 
+                               if (H->buffered) {
+                                       mysql_stmt_store_result(S->stmt);
+                               }
+
                                S->bound_result = ecalloc(stmt->column_count, sizeof(MYSQL_BIND));
                                S->out_null = ecalloc(stmt->column_count, sizeof(my_bool));
                                S->out_length = ecalloc(stmt->column_count, sizeof(unsigned long));
@@ -185,7 +189,11 @@ static int pdo_mysql_stmt_next_rowset(pdo_stmt_t *stmt TSRMLS_DC)
                return 0;
        } else {
                row_count = mysql_affected_rows(H->server);
-               S->result = mysql_use_result(H->server);
+               if (!H->buffered) {
+                       S->result = mysql_use_result(H->server);
+               } else {
+                       S->result = mysql_store_result(H->server);
+               }
 
                if (NULL == S->result) {
                        return 0;