我被这部分困住了,我知道肯定有一种方法可以动态地做到这一点,但我只是不知道怎么做。
我如何,在收到一个搜索查询,并知道有多少个数组在搜索查询,动态创建一个SQL字符串?
下面是显示的部分代码。任何帮助都很感激,谢谢!=)
if ($arraycount ==2){
$searchSQL = $db->query("SELECT * FROM table WHERE field1 IN (SELECT field2 FROM $table WHERE field3 IN ('$array[0]','$array[1]'));");
}
else if ($arraycount ==3){
$searchSQL = $db->query("SELECT * FROM table WHERE field1 IN (SELECT field2 FROM $table WHERE field3 IN ('$array[0]','$array[1]','$array[2]'));");
}
您可以使用implode
来连接数组的值。
$sql = "SELECT * FROM table WHERE field1
(SELECT field2 FROM $table
WHERE field3 IN ('".implode("','", $array)."')";
$searchSQL = $db->query($sql);
这里是Codepad demo
所有功劳都归功于@peterm,但有额外的安全措施(如果您使用MySQL)
... implode("','", array_map("mysql_real_escape_string", $array))