Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中轻松连接许多字符串_Php - Fatal编程技术网

在PHP中轻松连接许多字符串

在PHP中轻松连接许多字符串,php,Php,以下代码是正确的: $str = "INSERT INTO table ('".$val1."',"."'".$val2."'".","."'".$val3."'".","."'".$val4."')"; 但下面的代码不正确: $str = "INSERT INTO table ('".$val1."',"."'".$val2."'".","."".$val3."'".","."'".$val4."')"; 上面的示例很小,但您可以看到,当遗漏了“或”时,上述较大的情况对调试来说很烦人。有没

以下代码是正确的:

$str = "INSERT INTO table ('".$val1."',"."'".$val2."'".","."'".$val3."'".","."'".$val4."')";
但下面的代码不正确:

$str = "INSERT INTO table ('".$val1."',"."'".$val2."'".","."".$val3."'".","."'".$val4."')";
上面的示例很小,但您可以看到,当遗漏了“或”时,上述较大的情况对调试来说很烦人。有没有更好的方法在PHP中连接字符串?我想让变量的两边都有一个倒逗号,我想让字符串使用双倒逗号

一定有更好的方法..我从PHP编写了很多查询,这些查询与Oracle DB对话,我经常用这些字符串出错

谢谢:)

或者使用事先准备好的语句

怎么样

echo implode(",", array(
   '"'.$val1.'"',
   '"'.$val2.'"',
   '"'.$val3.'"',
));

但我必须说,使用准备好的语句可以更轻松地完成任务。

使用和foreach创建自己的函数,并对每个参数使用sql转义。请参见第页的示例1使用准备好的语句:

不要只是连接任意值来创建SQL语句。您将在应用程序中创建数百万个SQL注入漏洞

至少,要使用mysql\u real\u escape\u字符串或等效字符串

我建议您在编写任何具有重要意义的PHP应用程序之前,先阅读一下PHP应用程序设计和应用程序设计。

您可以试试这个

$str = "INSERT INTO table ('$val1','$val2','$val3')";

在处理大型参数集时,我更喜欢将它们放入数组中,并使用
内爆()
连接,如下面的代码所示:

$params = array('param1','param2','param3');
$param_string = "('".implode("','", $params)."')";

第1步:使用、准备好的语句和占位符。第2步:……第3步:利润。@mu太短:生产中不建议使用pdo oracle驱动程序,unfortunately@mu太短了:他的意思是,
应该是
@zerkms:对,编辑太迟了。真是为Oracle驱动程序感到羞耻。太棒了。这将为我节省大量的时间时间!看起来很干净,但我认为你应该像其他人注意到的那样用mysql\u real\u escape\u string()包装$val1和$val2。@塞吉:这是oracle,不是mysql。我确实注意到prepareds更喜欢它,但我想我会犯同样多的错误:P.太棒了..我不知道你能做到(duh:P)。迄今为止的最佳解决方案+1。非常有价值的建议+1。尽管如此,请参阅上面关于PDO Oracle驱动程序的评论。热爱XKCD。使用mysql_real_escape_string(),即使我使用的是Oracle DB,我认为它可以确保我的查询是安全的,即使它是针对MySQL的,对吗?似乎找不到任何与Oracle等效的。@alemaster:对于Oracle,更好的方法是使用带有
oci\u parse()的预备语句。
$params = array('param1','param2','param3');
$param_string = "('".implode("','", $params)."')";