php mysql bit类型字段的坑及万能省事解决方法

其它语言我不知道,反正做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);


  • 标签
  • 发表评论
当前用户:
  • 评论列表