sql - 选择boolean严格为true

时间:2016-07-21 09:40:38

标签: php mysql

我想选择一行Ad作为布尔值,这是严格正确的。 我使用以下SQL语句。

SELECT 'user' AS username, 'pass' AS password, true AS Ad FROM users LIMIT 1;

但是,上述语句选择Ad为1而不是真,因为以下条件不满足。 ===。更改下面的代码不是一种选择。

if($row["Ad"] === true){
                                echo("<h1>You are the admin</h1>");
                        }

2 个答案:

答案 0 :(得分:1)

MySQL 确实 boolean类型。相反,它将true表示为1,将false表示为0,并为此目的使用类型TINYINT

如果您想返回true,则必须使用文字值:

SELECT
  'user' AS username,
  'pass' AS password,
  'true' AS Ad
FROM users
LIMIT 1

然后:

if($row["Ad"] === "true") {

答案 1 :(得分:0)

在MySQL文档的Boolean Literals页面中,我们可以看到TRUE只是整数1的别名:

  

常量TRUE和FALSE分别计算为1和0。该   常数名称可以用任何字母组写。

mysql> SELECT TRUE, true, FALSE, false;
        -> 1, 1, 0, 0

所以你可能需要这样做:

if($row["Ad"] === 1){

但是,值得注意的是,某些数据库扩展和驱动程序组合可能会将数字检索为字符串。您可以使用以下方法检查实际值:

var_dump($row);

但是,我认为这是松散类型派上用场并且没有必要进行严格比较的情况之一:

if($row["Ad"] == 1){