在where in子句内的预备语句中的数组

array in prepared statement inside where in clause

本文关键字:预备 语句 数组 where in 子句      更新时间:2023-10-16
prep_stmt = con->prepareStatement("SELECT * FROM table WHERE customers in ( ? ) and alive = ?");
prep_stmt->setString(1,customer_string);
prep_stmt->setInt(2,1);
res = prep_stmt->executeQuery();     

这里的customer_string是"12,1,34,67,45,14"当我把它作为字符串传递时,它总是返回单行,第一个值只有12。

准备的sql语句为:

SELECT * FROM table WHERE customers in ( "12,1,34,67,45,14" ) and alive = 1 

,但我希望sql语句准备为:

SELECT * FROM table WHERE customers in (12,1,34,67,45,14 ) and alive = 1

在c++中实现相同功能的最简单方法是什么?

我假设您正在使用MySQL c++连接器。不幸的是,似乎不可能使用这个API将数组作为预处理语句的参数传递:

Connector/c++不支持以下JDBC标准数据类型:ARRAY、BLOB、CLOB、DISTINCT、FLOAT、OTHER、REF、STRUCT。

https://dev.mysql.com/doc/connector-cpp/en/connector-cpp-usage-notes.html

您可以通过连接字符串直接将值放入查询中。注意不要引入SQL注入漏洞。或者使用其他API