如何使用Parameters创建动态SQL字符串?

时间:2013-06-04 02:47:28

标签: php sql

我坚持使用这个部分,我知道肯定有一种方法可以动态地做到这一点,但我只是不知道如何。

如何在收到搜索查询并知道搜索查询中有多少个数组后,动态创建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]'));");
}

2 个答案:

答案 0 :(得分:1)

您可以使用implode来连接数组的值。

$sql = "SELECT * FROM table WHERE field1 
        (SELECT field2 FROM $table 
          WHERE field3 IN ('".implode("','", $array)."')";
$searchSQL = $db->query($sql);

这是 Codepad 演示。

答案 1 :(得分:0)

所有归功于@peterm,但有额外的安全措施(如果你使用MySQL)

... implode("','", array_map("mysql_real_escape_string", $array))