summaryrefslogtreecommitdiff
path: root/ext/mysqli/mysqli.c
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2003-11-07 17:20:49 +0000
committerIlia Alshanetsky <iliaa@php.net>2003-11-07 17:20:49 +0000
commitd9bf51b17c855550a326063c8f1096e10eb6728d (patch)
treed78f2de796d7dc25476ddee82fbce1cd149205ec /ext/mysqli/mysqli.c
parentf3d385a587c0d7ab6687f505b32a69ad66721d1b (diff)
downloadphp-git-d9bf51b17c855550a326063c8f1096e10eb6728d.tar.gz
10-18% optimization of fetch_array(), when both number & string indexes are
created. # Do we want to MFH the change (for ext/mysql) into 4.3.X?
Diffstat (limited to 'ext/mysqli/mysqli.c')
-rw-r--r--ext/mysqli/mysqli.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c
index a3ed8c3106..8e0cfc2911 100644
--- a/ext/mysqli/mysqli.c
+++ b/ext/mysqli/mysqli.c
@@ -375,7 +375,6 @@ void php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAMETERS, int override_flags
MYSQL_RES *result;
zval *mysql_result;
int fetchtype;
- int copyflag;
unsigned int i;
MYSQL_FIELD *fields;
MYSQL_ROW row;
@@ -430,24 +429,26 @@ void php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAMETERS, int override_flags
for (i = 0; i < mysql_num_fields(result); i++) {
if (row[i]) {
- char *column;
- int column_len;
-
+ zval *res;
+
+ MAKE_STD_ZVAL(res);
+
/* check if we need magic quotes */
if (PG(magic_quotes_runtime)) {
- column = php_addslashes(row[i], field_len[i], &column_len, 0 TSRMLS_CC);
- copyflag = 0;
+ Z_TYPE_P(res) = IS_STRING;
+ Z_STRVAL_P(res) = php_addslashes(row[i], field_len[i], &Z_STRLEN_P(res), 0 TSRMLS_CC);
} else {
- column = row[i];
- column_len = field_len[i];
- copyflag = 1;
+ ZVAL_STRINGL(res, row[i], field_len[i], 1);
}
+
if (fetchtype & MYSQLI_NUM) {
- add_index_stringl(return_value, i, column, column_len, copyflag);
- copyflag = 1;
+ add_index_zval(return_value, i, res);
}
if (fetchtype & MYSQLI_ASSOC) {
- add_assoc_stringl(return_value, fields[i].name, column, column_len, copyflag);
+ if (fetchtype & MYSQLI_NUM) {
+ ZVAL_ADDREF(res);
+ }
+ add_assoc_zval(return_value, fields[i].name, res);
}
} else {
if (fetchtype & MYSQLI_NUM) {