在表格中,我将列配置为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']
在值为零时未设置。我正在使用isset()
无效如果使用$_GET['value']
和网址如index.php?value=0
尝试以下,无法正常工作
$sql->bindValue(':value', '0'); // post contains 0 or 1
我将列类型更改为TINYINT(1)
- 无效。查找零时,所有内容都显示。
将PDO bindValue()
$data_type
设为PDO::PARAM_BOOL
,无法正常工作
答案 0 :(得分:0)
试试这个:
row
祝你好运!
答案 1 :(得分:0)
ENUM是一个字符串对象,其值从允许值列表中选择,这些值在表创建时在列规范中显式枚举。
枚举值必须是带引号的字符串文字;它可能不是表达式,即使是计算字符串值的表达式。
空字符串错误值的索引值为0.这意味着 您可以使用以下SELECT语句查找其中的行 分配了无效的ENUM值:
mysql> SELECT * FROM tbl_name WHERE enum_col=0;
因此,使用单引号将零(0)视为字符串。