1--TEST-- 2Bug GH-9372 (HY010 when binding overlong parameter) 3--EXTENSIONS-- 4pdo_odbc 5--SKIPIF-- 6<?php 7require 'ext/pdo/tests/pdo_test.inc'; 8PDOTest::skip(); 9?> 10--FILE-- 11<?php 12// Executing the statements fails with some drivers, but not others. 13// The test is written in a way to always pass, unless the execution 14// fails with a different code than 22001 (String data, right truncation). 15 16require 'ext/pdo/tests/pdo_test.inc'; 17$db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt'); 18$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 19 20$db->exec("CREATE TABLE gh9372 (col VARCHAR(10))"); 21$db->exec("INSERT INTO gh9372 VALUES ('something')"); 22 23$stmt = $db->prepare("SELECT * FROM gh9372 WHERE col = ?"); 24$stmt->bindValue(1, 'something else'); 25try { 26 $stmt->execute(); 27} catch (PDOException $ex) { 28 if ($ex->getCode() !== "22001") { 29 var_dump($ex->getMessage()); 30 } 31} 32 33$stmt = $db->prepare("SELECT * FROM gh9372 WHERE col = ?"); 34$stream = fopen("php://memory", "w+"); 35fwrite($stream, 'something else'); 36rewind($stream); 37$stmt->bindvalue(1, $stream, PDO::PARAM_LOB); 38try { 39 $stmt->execute(); 40} catch (PDOException $ex) { 41 if ($ex->getCode() !== "22001") { 42 var_dump($ex->getMessage()); 43 } 44} 45?> 46--CLEAN-- 47<?php 48require 'ext/pdo/tests/pdo_test.inc'; 49$db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt'); 50$db->exec("DROP TABLE gh9372"); 51?> 52--EXPECT-- 53