Skip to content

Commit 4f4f62f

Browse files
committed
Fixed the condition that the MYSQLND_OPT_INT_AND_FLOAT_NATIVE becomes true.
1 parent 47d4788 commit 4f4f62f

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

ext/pdo/pdo_dbh.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -792,6 +792,9 @@ static bool pdo_dbh_attribute_set(pdo_dbh_t *dbh, zend_long attr, zval *value) /
792792
return false;
793793
}
794794
dbh->stringify = bval;
795+
if (dbh->methods->set_attribute) {
796+
dbh->methods->set_attribute(dbh, attr, value);
797+
}
795798
return true;
796799

797800
case PDO_ATTR_STATEMENT_CLASS: {

ext/pdo_mysql/mysql_driver.c

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,19 @@ static bool pdo_mysql_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val)
459459
((pdo_mysql_db_handle *)dbh->driver_data)->fetch_table_names = bval;
460460
PDO_DBG_RETURN(true);
461461

462-
#ifndef PDO_USE_MYSQLND
462+
#ifdef PDO_USE_MYSQLND
463+
case PDO_ATTR_STRINGIFY_FETCHES:
464+
if (!pdo_get_bool_param(&bval, val)) {
465+
return false;
466+
}
467+
unsigned int int_and_float_native = !bval;
468+
pdo_mysql_db_handle *H = (pdo_mysql_db_handle *)dbh->driver_data;
469+
if (mysql_options(H->server, MYSQLND_OPT_INT_AND_FLOAT_NATIVE, (const char *) &int_and_float_native)) {
470+
pdo_mysql_error(dbh);
471+
return false;
472+
}
473+
PDO_DBG_RETURN(true);
474+
#else
463475
case PDO_MYSQL_ATTR_MAX_BUFFER_SIZE:
464476
if (!pdo_get_long_param(&lval, val)) {
465477
PDO_DBG_RETURN(false);
@@ -891,7 +903,7 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options)
891903
}
892904

893905
#ifdef PDO_USE_MYSQLND
894-
unsigned int int_and_float_native = 1;
906+
!pdo_attr_lval(driver_options, PDO_ATTR_STRINGIFY_FETCHES, dbh->stringify);
895907
if (mysql_options(H->server, MYSQLND_OPT_INT_AND_FLOAT_NATIVE, (const char *) &int_and_float_native)) {
896908
pdo_mysql_error(dbh);
897909
goto cleanup;

0 commit comments

Comments
 (0)