【发布时间】:2015-07-26 02:01:28
【问题描述】:
情况
在表中,我将列配置为ENUM('0','1')。我已经像这个例子一样使用 PDO 选择查询构建
$value = isset($_POST['value']) ? $_POST['value'] : (isset($_GET["value"]) ? $_GET["value"] : null);
$sql = $pdo->prepare("SELECT * FROM tablename WHERE column = :value");
$sql->bindValue(':value', $_POST['value']); // post contains 0 or 1
$sql->execute();
问题
打印结果时,值 1 正常工作。但是当使用值为 0 时,所有行都显示,包括值为 1 的行。
在 HeidiSQL 中尝试以下查询时正常工作,但在 PHP 中却没有。怎么了?
SELECT * FROM tablename WHERE column = '0'
我注意到 PHP 认为 $_POST['value'] 在其值为 0 时未设置。我正在使用isset()
试图解决问题
-
无效如果使用
$_GET['value']和像index.php?value=0这样的网址 -
尝试过,不起作用
$sql->bindValue(':value', '0'); // post 包含 0 或 1 -
我将列类型更改为
TINYINT(1)- 没有效果。当寻找零时,所有的都显示出来了。 -
将 PDO
bindValue()$data_type设置为PDO::PARAM_BOOL,不起作用
【问题讨论】:
-
它应该可以工作可能是 $_POST 值的问题
-
您的 PHP 版本针对的是名为“tablename”的表,请尝试将“customers_view”放在那里。还是这只是复制粘贴错误?
-
@Carsten,这只是一个复制粘贴错误。我尝试在 Stackoverflow 中使用
tablename和column。感谢您的指点 - 已编辑。