9

我有一个表单,它是一个选择多个输入的表单,它会像这样发布值:option1,option2,option3等等。

如何将其转换为'option1','option2','option3'等的最佳方法...

目前我正在这样做,但感觉不对??

$variable=explode(",", $variable);
$variable=implode("','", $variable);

我这样做的原因是因为我想使用表单在使用 IN 的 SQL 查询中选择多个输入。

SELECT * FROM TABLE WHERE some_column IN ('$variable')
4

5 回答 5

12

您可以将任何代码包装在一个函数中,以使“感觉不对”的感觉消失。例如:

function buildSqlInClauseFromCsv($csv)
{
        return "in ('" . str_replace(",", "','", $csv) . "') ";
}
于 2012-10-07T20:48:43.903 回答
4

如果 $variable = "option1,option2,option3"

您可以使用:

“SELECT * FROM TABLE WHERE FIND_IN_SET(some_column, '$variable')”

于 2016-06-28T03:42:49.357 回答
2

我们知道 implode 将数组转换为字符串,我们需要提供分隔符,然后数组如下所示,这里我们有 (coma ,) 作为分隔符。Implode 使用给定的分隔符打破数组的每个元素,我自负 '(单引号)与分隔符。

 $arr = array();
    $arr[] = "raam"; 
    $arr[] = "laxman"; 
    $arr[] = "Bharat"; 
    $arr[] = "Arjun"; 
    $arr[] = "Dhavel"; 
    var_dump($arr);


    $str = "'".implode("','", $arr)."'";
    echo $str;

输出: 'raam','laxman','Bharat','Arjun','Dhavel'

于 2015-03-04T06:41:48.030 回答
2

这是我使用的:

WHERE  column IN ('".str_replace(",", "','", $_GET[stringlist])."')
于 2014-04-07T01:30:27.087 回答
-1

为 SQL 转义字符串只有一种正确的方法——使用数据库 api 提供的函数为 SQL 转义字符串。同时mysyl_*提供mysql_real_escape_string()

$choices = explode(",", $variable);

foreach($choices as &$choice)
    $choice = "'".mysql_real_escape_string($choice)."'";

$choices = implode(",", $choices);

PDO 提供了一种同时添加引号的方法:

$choices = explode(",", $variable);

foreach($choices as &$choice)
    $choice = $pdoDb->quote($choice);

$choices = implode(",", $choices);

请注意, PDO::prepare在这里实际上不起作用

于 2012-10-07T20:57:35.100 回答