簡體   English   中英

在PHP中為逗號分隔的字符串添加引號

[英]Add quotation marks to comma delimited string in PHP

我有一個表單是一個選擇多個輸入,其POST值如下: option1,option2,option3等。

如何將此轉換為'option1','option2','option3'等的最佳方法...

我正在這樣做,但感覺不對?

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

我之所以這樣做,是因為我想使用IN在SQL查詢中使用表單選擇多個輸入。

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

你可以在函數中包含任何代碼,使“感覺不對”的感覺消失。 例如:

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

如果$ variable =“option1,option2,option3”

您可以使用:

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

這是我用過的:

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

我們知道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'

只有一種正確的方法來轉義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在這里不起作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM