开发者社区> 问答> 正文

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 669 0
1 条回答
写回答
取消 提交回答
  • 
     $sql = "select * from table where id in (?, ?, ?)";  
     $param = array(1, 2, 3);  
    
    2020-05-30 23:19:47
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像