mirror of
https://github.com/php/php-src.git
synced 2025-08-16 22:18:50 +02:00
Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4: Fix #44643: bound parameters ignore explicit type definitions
This commit is contained in:
commit
63c558bcbb
3 changed files with 35 additions and 3 deletions
3
NEWS
3
NEWS
|
@ -28,6 +28,9 @@ PHP NEWS
|
||||||
. Fixed bug #81015 (Opcache optimization assumes wrong part of ternary
|
. Fixed bug #81015 (Opcache optimization assumes wrong part of ternary
|
||||||
operator in if-condition). (Nikita)
|
operator in if-condition). (Nikita)
|
||||||
|
|
||||||
|
- PDO_ODBC:
|
||||||
|
. Fixed bug #44643 (bound parameters ignore explicit type definitions). (cmb)
|
||||||
|
|
||||||
- PDO_pgsql:
|
- PDO_pgsql:
|
||||||
. Reverted bug fix for #80892 (PDO::PARAM_INT is treated the same as
|
. Reverted bug fix for #80892 (PDO::PARAM_INT is treated the same as
|
||||||
PDO::PARAM_STR). (Matteo)
|
PDO::PARAM_STR). (Matteo)
|
||||||
|
|
|
@ -321,9 +321,16 @@ static int odbc_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *p
|
||||||
if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
|
if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
|
||||||
/* MS Access, for instance, doesn't support SQLDescribeParam,
|
/* MS Access, for instance, doesn't support SQLDescribeParam,
|
||||||
* so we need to guess */
|
* so we need to guess */
|
||||||
sqltype = PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_LOB ?
|
switch (PDO_PARAM_TYPE(param->param_type)) {
|
||||||
SQL_LONGVARBINARY :
|
case PDO_PARAM_INT:
|
||||||
SQL_LONGVARCHAR;
|
sqltype = SQL_INTEGER;
|
||||||
|
break;
|
||||||
|
case PDO_PARAM_LOB:
|
||||||
|
sqltype = SQL_LONGVARBINARY;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sqltype = SQL_LONGVARCHAR;
|
||||||
|
}
|
||||||
precision = 4000;
|
precision = 4000;
|
||||||
scale = 5;
|
scale = 5;
|
||||||
nullable = 1;
|
nullable = 1;
|
||||||
|
|
22
ext/pdo_odbc/tests/bug44643.phpt
Normal file
22
ext/pdo_odbc/tests/bug44643.phpt
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
--TEST--
|
||||||
|
Bug #44643 (bound parameters ignore explicit type definitions)
|
||||||
|
--SKIPIF--
|
||||||
|
<?php
|
||||||
|
if (!extension_loaded('pdo_odbc')) die('skip pdo_odbc extension not available');
|
||||||
|
require 'ext/pdo/tests/pdo_test.inc';
|
||||||
|
PDOTest::skip();
|
||||||
|
?>
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
require 'ext/pdo/tests/pdo_test.inc';
|
||||||
|
$db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
|
||||||
|
$sql = "SELECT * FROM (SELECT 'test' = :id1) a WHERE a.test = :id2";
|
||||||
|
$stmt = $db->prepare($sql);
|
||||||
|
$id1 = 1;
|
||||||
|
$stmt->bindParam(':id1', $id1, PDO::PARAM_INT);
|
||||||
|
$id2 = 1;
|
||||||
|
$stmt->bindParam(':id2', $id2, PDO::PARAM_INT);
|
||||||
|
var_dump($stmt->execute());
|
||||||
|
?>
|
||||||
|
--EXPECT--
|
||||||
|
bool(true)
|
Loading…
Add table
Add a link
Reference in a new issue