如何使用参数创建动态SQL字符串


How do I create a dynamic SQL string using Parameters?

我被这部分困住了,我知道肯定有一种方法可以动态地做到这一点,但我只是不知道怎么做。

我如何,在收到一个搜索查询,并知道有多少个数组在搜索查询,动态创建一个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))