难以使用IN()运算符与内爆数组 - mySQL

时间:2014-09-24 20:58:29

标签: php mysql arrays implode

对可能重复的问题的回应 - 请注意,对于某些(可能更有经验的)程序员来说,这可能看起来像一个重复的问题,但对于像我这样的菜鸟不是:-(被表示为重复的问题并未解决我的问题,而已接受的答案完全解决了问题。


根据众多SO帖子(包括this one),为了将IN()运算符与数组一起使用,首先需要将其内爆(从而将数组转换为字符串)。

下面的查询与IN()语句中的变量一起正常工作,但我似乎无法使用内爆数组。

这可以使用并返回8行产品

$colors_VAR = "'Black','Royal_Blue','Dodger_Blue','Red'";
$stmt = $conn->prepare("SELECT * FROM products WHERE products.Color IN ($colors_VAR)"); 

这不会返回任何结果

$colors_Array = array('Black','Royal_Blue','Dodger_Blue','Red');
$stmt = $conn->prepare("SELECT * FROM products WHERE products.Color IN (' . implode(',', $colors_Array) . ')"); 

1 个答案:

答案 0 :(得分:4)

你需要用引号括起颜色,比如

$colors_Array = array('Black','Royal_Blue','Dodger_Blue','Red');
$stmt = $conn->prepare("SELECT * FROM products WHERE products.Color IN ('" . implode("','", $colors_Array) . "')");

额外的引号组在数组中的每个单独项目周围放置一组引号 - 'Black','Royal_Blue','Dodger_Blue','Red'