bug_43130.phpt 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. --TEST--
  2. PDO Common: Bug #43130 (Bound parameters cannot have - in their name)
  3. --EXTENSIONS--
  4. pdo
  5. --SKIPIF--
  6. <?php
  7. $dir = getenv('REDIR_TEST_DIR');
  8. if (false == $dir) die('skip no driver');
  9. if (!strncasecmp(getenv('PDOTEST_DSN'), 'sqlite', strlen('sqlite'))) die('skip not relevant for sqlite driver');
  10. if (!strncasecmp(getenv('PDOTEST_DSN'), 'pgsql', strlen('pgsql'))) die('skip not relevant for pgsql driver');
  11. if (!strncasecmp(getenv('PDOTEST_DSN'), 'oci', strlen('oci'))) die('skip not relevant for oci driver - Hyphen is not legal for bind names in Oracle DB');
  12. if (!strncasecmp(getenv('PDOTEST_DSN'), 'firebird', strlen('firebird'))) die('skip not relevant for firebird driver');
  13. if (!strncasecmp(getenv('PDOTEST_DSN'), 'odbc', strlen('odbc'))) die('skip not relevant for odbc driver');
  14. require_once $dir . 'pdo_test.inc';
  15. PDOTest::skip();
  16. ?>
  17. --FILE--
  18. <?php
  19. if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.__DIR__ . '/../../pdo/tests/');
  20. require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
  21. $db = PDOTest::factory();
  22. if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql')
  23. $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
  24. $db->exec("CREATE TABLE test (a varchar(100), b varchar(100), c varchar(100))");
  25. for ($i = 0; $i < 5; $i++) {
  26. $db->exec("INSERT INTO test (a,b,c) VALUES('test".$i."','".$i."','".$i."')");
  27. }
  28. $stmt = $db->prepare("SELECT a FROM test WHERE b=:id-value");
  29. $stmt->bindParam(':id-value', $id);
  30. $id = '1';
  31. $stmt->execute();
  32. var_dump($stmt->fetch(PDO::FETCH_COLUMN));
  33. ?>
  34. --EXPECTF--
  35. Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in %s on line %d
  36. bool(false)