diff options
author | George Peter Banyard <girgias@php.net> | 2021-03-15 16:26:04 +0000 |
---|---|---|
committer | George Peter Banyard <girgias@php.net> | 2021-03-17 00:58:01 +0000 |
commit | ebaeb93c3f9f23aa9b2e5ccc1f8bf17ec3700bf2 (patch) | |
tree | b719eb118b40cb31fb2abc543c2e55afea3d9ca1 /ext/pdo_mysql/mysql_driver.c | |
parent | c465462e912eae73d1e0407f2d2cb815f40f1c13 (diff) | |
download | php-git-ebaeb93c3f9f23aa9b2e5ccc1f8bf17ec3700bf2.tar.gz |
Add API to fetch bool value for PDO attribute values
Closes GH-6766
Diffstat (limited to 'ext/pdo_mysql/mysql_driver.c')
-rw-r--r-- | ext/pdo_mysql/mysql_driver.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/ext/pdo_mysql/mysql_driver.c b/ext/pdo_mysql/mysql_driver.c index 74a24be399..7bc0cbcf0a 100644 --- a/ext/pdo_mysql/mysql_driver.c +++ b/ext/pdo_mysql/mysql_driver.c @@ -403,14 +403,16 @@ static inline int mysql_handle_autocommit(pdo_dbh_t *dbh) static bool pdo_mysql_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val) { zend_long lval; - /* Don't use pdo_get_long_param() API as zval_get_long accepts more things */ - bool bval = zval_get_long(val) ? 1 : 0; + bool bval; PDO_DBG_ENTER("pdo_mysql_set_attribute"); PDO_DBG_INF_FMT("dbh=%p", dbh); PDO_DBG_INF_FMT("attr=%l", attr); switch (attr) { case PDO_ATTR_AUTOCOMMIT: + if (!pdo_get_bool_param(&bval, val)) { + return false; + } /* ignore if the new value equals the old one */ if (dbh->auto_commit ^ bval) { dbh->auto_commit = bval; @@ -428,17 +430,26 @@ static bool pdo_mysql_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val) PDO_DBG_RETURN(true); case PDO_MYSQL_ATTR_USE_BUFFERED_QUERY: + if (!pdo_get_bool_param(&bval, val)) { + return false; + } /* ignore if the new value equals the old one */ ((pdo_mysql_db_handle *)dbh->driver_data)->buffered = bval; PDO_DBG_RETURN(true); case PDO_MYSQL_ATTR_DIRECT_QUERY: case PDO_ATTR_EMULATE_PREPARES: + if (!pdo_get_bool_param(&bval, val)) { + return false; + } /* ignore if the new value equals the old one */ ((pdo_mysql_db_handle *)dbh->driver_data)->emulate_prepare = bval; PDO_DBG_RETURN(true); case PDO_ATTR_FETCH_TABLE_NAMES: + if (!pdo_get_bool_param(&bval, val)) { + return false; + } ((pdo_mysql_db_handle *)dbh->driver_data)->fetch_table_names = bval; PDO_DBG_RETURN(true); |