在PHP中为逗号分隔的字符串添加引号

时间:2012-10-07 20:29:08

标签: php string comma delimited quotation-marks

我有一个表单,它是一个选择多个输入,其POST值如下:option1,option2,option3等。

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

当然我正在这样做,但感觉不对吗?

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

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

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

5 个答案:

答案 0 :(得分:12)

你可以在函数中包含任何代码,使“感觉不对”的感觉消失。 E.g:

function buildSqlInClauseFromCsv($csv)
{
        return "in ('" . str_replace(",", "','", $csv) . "') ";
}

答案 1 :(得分:3)

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

你可以使用:

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

答案 2 :(得分:1)

以下是我使用的内容:

WHERE  column IN ('".str_replace(",", "','", $_GET[stringlist])."')

答案 3 :(得分:1)

我们知道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',&# 39; Dhavel'

答案 4 :(得分:-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 ::在这里准备doesn't really work