在PHP中向逗号分隔的字符串添加引号
我有一个表单,它是一个选择多输入,它发布如下值:在PHP中向逗号分隔的字符串添加引号,php,string,comma,delimited,quotation-marks,Php,String,Comma,Delimited,Quotation Marks,我有一个表单,它是一个选择多输入,它发布如下值:option1、option2、option3等 如何将其转换为“选项1”、“选项2”、“选项3”等的最佳方式 目前我正在做这件事,但感觉不对 $variable=explode(",", $variable); $variable=implode("','", $variable); 之所以这样做,是因为我想在SQL查询中使用表单select multiple inputs,使用in SELECT * FROM TABLE WHERE some
option1、option2、option3
等
如何将其转换为“选项1”、“选项2”、“选项3”等的最佳方式
目前我正在做这件事,但感觉不对
$variable=explode(",", $variable);
$variable=implode("','", $variable);
之所以这样做,是因为我想在SQL查询中使用表单select multiple inputs,使用in
SELECT * FROM TABLE WHERE some_column IN ('$variable')
您可以将任何代码包装到函数中,以使“感觉错误”的感觉消失。例如:
function buildSqlInClauseFromCsv($csv)
{
return "in ('" . str_replace(",", "','", $csv) . "') ";
}
只有一种正确的方法可以为SQL转义字符串-使用数据库api提供的函数为SQL转义字符串。而
mysyl.*
提供了mysql\u real\u escape\u string()
:
PDO提供了一种同时添加引号的方法:
$choices = explode(",", $variable);
foreach($choices as &$choice)
$choice = $pdoDb->quote($choice);
$choices = implode(",", $choices);
请注意,PDO::prepare here以下是我使用的:
WHERE column IN ('".str_replace(",", "','", $_GET[stringlist])."')
我们知道内爆将数组转换为字符串,我们需要提供分隔符,然后提供如下所示的数组,这里我们有(coma,)作为分隔符。 内爆使用给定的分隔符打断数组中的每个元素,我用分隔符骄傲地引用了“(单引号)
$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'如果$variable=“option1、option2、option3”
您可以使用:
“从查找集合中的表格(某些列,$variable')中选择*”如何将第一个和最后一个
“
?或者你把它放在一些没有显示的代码中?我编辑了SQL语句,在其中我给变量添加了引号。不要像这样构建查询字符串。使用。米加,为什么不呢?为什么PDO更好?如果使用FIND_IN_SET()
的话,你可能会更好。我所说的“感觉错误”可能有一个痛苦的方法:)你认为这个函数会更快吗?这是一个很好的实践,但不幸的是,这并不是对所问问题的回答。@Hammerite:不推荐-这个问题意味着提问者已经在使用它了。@Asad:我觉得它为您添加了引用。编辑为使用PDO版本,确实如此。虽然这可能会回答问题,但最好在答案中加入一些文字来解释你在做什么。阅读。谢谢你的建议。太好了。如果可以在一行中完成,为什么要内爆爆炸?如何使用NOT in SET?Kiran Reddy:从NOT FIND in SET(某些列,$variable)的表格中选择*
$arr = array();
$arr[] = "raam";
$arr[] = "laxman";
$arr[] = "Bharat";
$arr[] = "Arjun";
$arr[] = "Dhavel";
var_dump($arr);
$str = "'".implode("','", $arr)."'";
echo $str;