【发布时间】:2018-06-22 08:06:16
【问题描述】:
有人可以帮我获取 SELECT 查询 (2)。下面上班?
此字符串用于两个 SELECT 语句:
$seller_items = ('6','9','12','13','14','15','16','17','18','19','20','22','23','24','25','26','28','27','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50','51','53','54','55','57','58','59','60','62','63','64','65','61','67','56','69','70','74','73','75','78','80','76','72','95','94','101','102','71','103','2','104','4','81','21','10','11','3','79','5','8','7','97','93','96','98');
(1)。此 SELECT 查询运行良好:
if ($stmt = $mysqli->prepare("SELECT info FROM items WHERE item_id IN $seller_items AND active = ?")){
$stmt->bind_param("s",$active);
(2)。此 SELECT 查询不起作用:
if ($stmt = $mysqli->prepare("SELECT info FROM items WHERE item_id IN ? AND active = ?")){
$stmt->bind_param("ss",$seller_items,$active);
我认为将变量放在 SELECT 查询本身可能会破坏预准备语句的目的。
我可以使 IN 谓词与未准备好的语句一起正常工作。这是我遇到问题的准备好的声明。
提前谢谢你。
【问题讨论】:
-
您不能在 SQL 中参数化
IN运算符。 -
在 MSSQL 中,参数化值数组的方法是将其作为表值参数传递,并与它进行 JOIN。我假设 MySQL 有类似的东西。否则,创建并插入到临时表中。
-
@Dai - 感谢您提供的信息。我很感激。 :)
-
@Mike - 感谢您提供信息和链接。我很感激。 :)
标签: php mysql prepared-statement