【发布时间】:2011-11-28 16:26:33
【问题描述】:
我正在创建一个内存 SQLite 数据库并在其中插入一些行。不幸的是,我无法选择刚刚插入的行。
<?php
const CACHE_SCHEMA = <<<EOD
CREATE TABLE test ( column1 TINYTEXT,
column2 MEDIUMTEXT,
column3 INT,
column4 INT )
EOD;
$db = new PDO('sqlite::memory:');
$statement = $db->query(CACHE_SCHEMA);
$statement->execute();
$statement = $db->prepare('INSERT INTO test (column1, column2, column3, column4) VALUES (?,?,?,?)');
$statement->execute(array('a', 'b', 123, 2));
$statement = $db->prepare('SELECT column2 FROM test WHERE column1 = ? AND column3 + column4 >= ?');
$statement->execute(array('a', 124));
var_dump($statement->fetch(PDO::FETCH_ASSOC));
?>
输出:
bool(false)
如您所见,'SELECT' 语句没有返回我插入的行:
- 在我插入的行中添加
'column3'和'column4'会产生125。 -
语句的
'WHERE'子句变为:'WHERE column1 = "a" AND column3 + column4 >= 124'一旦参数被填写。
- 除非我弄错了,否则
125 >= 124。
【问题讨论】: