pdo: cannot send NULL values thru bound parameters.
| From: | Thies C . Arntzen | Date: | Thu, 24 Mar 2005 11:19:02 +0000 |
| Subject: | pdo: cannot send NULL values thru bound parameters. | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-15572@lists.php.net to get a copy of this message | ||
as we convert "incoming" zvals to strings in pdo_stmt.c "no matter what"...
$stmt = $this->prepareStatement('insert into bla (name) values (:name)');
$name = NULL;
var_dump($name); // $name is NULL
$stmt->bindParam(':name', $name);
var_dump($name); // $name is an empty string
am i overlooking something obvious?
attached patch "fixes" it for me (NULL is a valid "value" for a string)...
re, tc
Index: pdo_stmt.c
===================================================================
RCS file: /repository/php-src/ext/pdo/pdo_stmt.c,v
retrieving revision 1.94
diff -u -w -r1.94 pdo_stmt.c
--- pdo_stmt.c 21 Mar 2005 00:29:06 -0000 1.94
+++ pdo_stmt.c 24 Mar 2005 11:13:31 -0000
@@ -253,7 +253,7 @@
}} - if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_STR && param->max_value_len <= 0) { + if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_STR && param->max_value_len <= 0 && ! ZVAL_IS_NULL(param->parameter)) {
convert_to_string(param->parameter);}