今天在写爱玩电脑后台的某个功能发现这个问题,就是通过prepare操作MySQL时IN()语句中使用预定义变量会出错,查询结果与预期不相符,以下是详细示例。
$sql = "UPDATE `content` SET `catalog_id` = ? WHERE `id` IN (?)"; $mysql->update($sql, array($id, $ids));
此时执行结果与预期的不相符,我们再看看下面的方法。
$sql = "UPDATE `content` SET `catalog_id` = ? WHERE `id` IN ({$ids})"; $mysql->update($sql, array($id));
这次执行结果与预期相符,总结如下:
当使用MySQL prepare操作数据库时,IN()方法中不能使用包含预定义变量。
【推荐】爱玩电脑 http://aowana.sinaapp.com 感兴趣的朋友支持一下吧!
$sql = "select * from table where id in (?, ?, ?)";
$param = array(1, 2, 3);
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。