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