其它语言我不知道,反正做php最讨厌碰到bit类型的mysql字段了,虽然可以定义为int(1)一样用,但是强迫症怎么能忍呢???下面介绍一下,一次处理,无视环境差异的写法。
首先是插入、更新的坑,你是写数字1呢还是字符串1呢?其实都可以,但是在不同mysql环境下会有不同的结果,所以写入时一定要转为整数类型。
拼接SQL用法:
$bool = '1'; // 也可以是true/false或1/0 $sql = '……xxx = ' . (int)$bool;
PDO参数绑定:
$bool = true; $stmt->bindValue('字段名', $bool, PDO::PARAM_BOOL);
然后就是查询出来结果,我们进行判断时候坑又来了。我遇到两种情况:
1、查询出来是字符串的1和0
2、查询出来是ascii码为1和0字符
通过下面的写法,可以很方便地把各种返回结果转为true或false
$value = (1 == $value || chr(1) == $value);