9

私は、次のような POST 値を選択する複数の入力であるフォームを持っています: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 に答える
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 の文字列をエスケープする正しい方法は 1 つだけです。データベース 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 に答える