iliaa Tue Nov 7 17:57:37 2006 UTC Modified files: /php-src/ext/pdo/tests bug_39398.phpt /php-src/ext/pdo pdo_stmt.c Log: MFB: Fixed bug #39398 (Booleans are not automatically translated to integers). http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/tests/bug_39398.phpt?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/pdo/tests/bug_39398.phpt diff -u /dev/null php-src/ext/pdo/tests/bug_39398.phpt:1.2 --- /dev/null Tue Nov 7 17:57:37 2006 +++ php-src/ext/pdo/tests/bug_39398.phpt Tue Nov 7 17:57:37 2006 @@ -0,0 +1,35 @@ +--TEST-- +PDO Common: PHP Bug #39398: Booleans are not automatically translated to integers +--SKIPIF-- +<?php # vim:ft=php +if (!extension_loaded('pdo')) die('skip'); +$dir = getenv('REDIR_TEST_DIR'); +if (false == $dir) die('skip no driver'); +require_once $dir . 'pdo_test.inc'; +PDOTest::skip(); +?> +--FILE-- +<?php +if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.dirname(__FILE__) . '/../../pdo/tests/'); +require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc'; + +$db = PDOTest::factory(); +$db->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=== http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.166&r2=1.167&diff_format=u Index: php-src/ext/pdo/pdo_stmt.c diff -u php-src/ext/pdo/pdo_stmt.c:1.166 php-src/ext/pdo/pdo_stmt.c:1.167 --- php-src/ext/pdo/pdo_stmt.c:1.166 Wed Aug 23 19:15:46 2006 +++ php-src/ext/pdo/pdo_stmt.c Tue Nov 7 17:57:37 2006 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_stmt.c,v 1.166 2006/08/23 19:15:46 tony2001 Exp $ */ +/* $Id: pdo_stmt.c,v 1.167 2006/11/07 17:57:37 iliaa Exp $ */ /* The PDO Statement Handle Class */ @@ -278,6 +278,10 @@ 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;
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php