用CI做个项目时,遇到一个问题,其中一个字段是base64转码后的,类似“MnlhMGpZTTNVMTQzNjUwNjQ3Ng==”。 作为查询条件时,始终查不出结果。
sql是这样写的:
$where = "user_id=" . $this->data['user_id']. " AND data='" .$this->data['token']. "' AND expire>". time();
把sql打印出来,就成了:
`user_id` = 2 AND data='MmJOaTBXMXZwMTQzNjUwMzY0NA= = ' AND `expire` > 1436503724
发现,“=”被处理了。跟踪后,发现是在CI的 DB_query_builder.php的_compile_wh函数中,将sql的key和value 分别解析为:
key:data='MmJOaTBXMXZwMTQzNjUwMzY0NA=
value: '
终于发现问题所在了。修改sql为:
$where = "user_id=" . $this->data['user_id']. " AND data = '" .$this->data['token']. "' AND expire>". time();
成功了。
非常汗的一个问题。。