[英]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.