com php-src: PDO MySQL: Handle boolean parameter binding with libmysql: ext/pdo_mysql/mysql_statement.c
| From: | Nikita Popov | Date: | Fri, 18 Dec 2020 10:01:26 +0000 |
| Subject: | com php-src: PDO MySQL: Handle boolean parameter binding with libmysql: ext/pdo_mysql/mysql_statement.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-114499@lists.php.net to get a copy of this message | ||
Commit: 51f57e7b8165600be7b81a15113b150369aa7215
Author: Nikita Popov <nikita.ppv@gmail.com> Fri, 18 Sep 2020 17:46:42 +0200
Parents: ab846231088d9e2d6a2354b52386e48037e95eb5
Branches: PHP-8.0 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=51f57e7b8165600be7b81a15113b150369aa7215
Log:
PDO MySQL: Handle boolean parameter binding with libmysql
Previously boolean parameters were simply silently ignored...
Changed paths:
M ext/pdo_mysql/mysql_statement.c
Diff:
diff --git a/ext/pdo_mysql/mysql_statement.c b/ext/pdo_mysql/mysql_statement.c
index 180a4616ef8..0d0df4ca6d3 100644
--- a/ext/pdo_mysql/mysql_statement.c
+++ b/ext/pdo_mysql/mysql_statement.c
@@ -367,6 +367,10 @@ static const char * const pdo_param_event_names[] =
"PDO_PARAM_EVT_NORMALIZE",
};
+#ifndef PDO_USE_MYSQLND
+static unsigned char libmysql_false_buffer = 0;
+static unsigned char libmysql_true_buffer = 1;
+#endif
static int pdo_mysql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *param, enum
pdo_param_event event_type) /* {{{ */
{
@@ -503,6 +507,16 @@ static int pdo_mysql_stmt_param_hook(pdo_stmt_t *stmt, struct
pdo_bound_param_da
*b->length = Z_STRLEN_P(parameter);
PDO_DBG_RETURN(1);
+ case IS_FALSE:
+ b->buffer_type = MYSQL_TYPE_TINY;
+ b->buffer = &libmysql_false_buffer;
+ PDO_DBG_RETURN(1);
+
+ case IS_TRUE:
+ b->buffer_type = MYSQL_TYPE_TINY;
+ b->buffer = &libmysql_true_buffer;
+ PDO_DBG_RETURN(1);
+
case IS_LONG:
b->buffer_type = MYSQL_TYPE_LONG;
b->buffer = &Z_LVAL_P(parameter);