From: Ilia Alshanetsky Date: Tue, 7 Nov 2006 17:57:37 +0000 (+0000) Subject: MFB: Fixed bug #39398 (Booleans are not automatically translated to X-Git-Tag: RELEASE_1_0_0RC1~1112 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b38a50bb4f5050d647c49d34b52f095b6ca5c787;p=php MFB: Fixed bug #39398 (Booleans are not automatically translated to integers). --- diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c index b035783246..bf4ae99781 100755 --- a/ext/pdo/pdo_stmt.c +++ b/ext/pdo/pdo_stmt.c @@ -278,6 +278,10 @@ static int really_register_bound_param(struct pdo_bound_param_data *param, pdo_s 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); + } else if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_INT && Z_TYPE_P(param->parameter) == IS_BOOL) { + convert_to_long(param->parameter); + } else if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_BOOL && Z_TYPE_P(param->parameter) == IS_LONG) { + convert_to_boolean(param->parameter); } param->stmt = stmt; diff --git a/ext/pdo/tests/bug_39398.phpt b/ext/pdo/tests/bug_39398.phpt new file mode 100644 index 0000000000..7b81747cf3 --- /dev/null +++ b/ext/pdo/tests/bug_39398.phpt @@ -0,0 +1,35 @@ +--TEST-- +PDO Common: PHP Bug #39398: Booleans are not automatically translated to integers +--SKIPIF-- + +--FILE-- +exec("CREATE TABLE test (test INT)"); + +$boolean = 1; +$stmt = $db->prepare('INSERT INTO test VALUES (:boolean)'); +$stmt->bindValue(':boolean', isset($boolean), PDO::PARAM_INT); +$stmt->execute(); + +var_dump($db->query("SELECT * FROM test")->fetchAll(PDO::FETCH_ASSOC)); +?> +===DONE=== +--EXPECT-- +array(1) { + [0]=> + array(1) { + ["test"]=> + string(1) "1" + } +} +===DONE===