很容易在PHP中连接多个字符串

时间:2011-09-14 06:14:38

标签: php

以下代码是正确的:

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

但下面的代码不正确:

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

上面的例子虽然很小,但你可以看到,当一个人错过了一个'或'时,上面的大型案例很难调试。有没有更好的方法在PHP中连接字符串?我希望变量有单个在困惑的一面倒置逗号,我希望使用双引号逗号制作字符串。

必须有一个更好的方法..我从PHP写了很多与Oracle DB交谈的查询,而且我一直在用这些字符串犯错!!

谢谢你:)。

6 个答案:

答案 0 :(得分:5)

$str = sprintf("INSERT INTO table ('%s', '%s', ...", $val1, $val2);

或使用预备陈述

答案 1 :(得分:3)

你可以试试这个

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

答案 2 :(得分:2)

使用准备好的陈述:http://us2.php.net/manual/en/pdo.prepared-statements.php

从不只是连接任意值来创建SQL语句。您将在应用程序中创建数百万个SQL注入漏洞。 http://xkcd.com/327/

至少,使用mysql_real_escape_string或等效的。

我建议您在编写任何结果的PHP应用程序之前先阅读security和应用程序设计。

答案 3 :(得分:0)

怎么样

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

但我必须说,通过准备好的陈述,你可以更容易地做到这一点。

答案 4 :(得分:0)

使用http://php.net/manual/en/function.func-get-args.php和foreach创建自己的函数,并为每个参数使用sql escapeing。请参阅第

页上的example1

答案 5 :(得分:0)

在处理大型参数集时,我更喜欢将它们放入数组并加入implode() function.implode,如下面的代码所示:

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