xref: /PHP-8.4/ext/pdo/tests/pdo_024.phpt (revision f4a5db3e)
1--TEST--
2PDO Common: assert that bindParam does not modify parameter
3--EXTENSIONS--
4pdo
5--SKIPIF--
6<?php
7$dir = getenv('REDIR_TEST_DIR');
8if (false == $dir) die('skip no driver');
9require_once $dir . 'pdo_test.inc';
10PDOTest::skip();
11?>
12--FILE--
13<?php
14if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.__DIR__ . '/../../pdo/tests/');
15require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
16$db = PDOTest::factory();
17
18switch ($db->getAttribute(PDO::ATTR_DRIVER_NAME)) {
19    case 'dblib':
20        // environment settings can influence how the table is created if specifics are missing
21        // https://msdn.microsoft.com/en-us/library/ms174979.aspx#Nullability Rules Within a Table Definition
22        $sql = 'create table test024 (id int, name varchar(10) null)';
23        break;
24    default:
25        $sql = 'create table test024 (id int, name varchar(10))';
26        break;
27}
28$db->exec($sql);
29
30$stmt = $db->prepare('insert into test024 (id, name) values(0, :name)');
31$name = NULL;
32$before_bind = $name;
33$stmt->bindParam(':name', $name, PDO::PARAM_NULL);
34if ($name !== $before_bind) {
35    echo "bind: fail\n";
36} else {
37    echo "bind: success\n";
38}
39var_dump($stmt->execute());
40var_dump($db->query('select name from test024 where id=0')->fetchColumn());
41
42?>
43--CLEAN--
44<?php
45require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
46$db = PDOTest::factory();
47PDOTest::dropTableIfExists($db, "test024");
48?>
49--EXPECT--
50bind: success
51bool(true)
52NULL
53