开发者社区> 问答> 正文

MySQL prepare IN() 使用预定义变量出错 400 请求报错 

    今天在写爱玩电脑后台的某个功能发现这个问题,就是通过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 感兴趣的朋友支持一下吧!

展开
收起
kun坤 2020-05-30 23:19:37 646 0
1 条回答
写回答
取消 提交回答
  • 
     $sql = "select * from table where id in (?, ?, ?)";  
     $param = array(1, 2, 3);  
    
    2020-05-30 23:19:47
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像