以下代码是正确的:
$str = "INSERT INTO table ('".$val1."',"."'".$val2."'".","."'".$val3."'".","."'".$val4."')";
但下面的代码不正确:
$str = "INSERT INTO table ('".$val1."',"."'".$val2."'".","."".$val3."'".","."'".$val4."')";
上面的例子虽然很小,但你可以看到,当一个人错过了一个'或'时,上面的大型案例很难调试。有没有更好的方法在PHP中连接字符串?我希望变量有单个在困惑的一面倒置逗号,我希望使用双引号逗号制作字符串。
必须有一个更好的方法..我从PHP写了很多与Oracle DB交谈的查询,而且我一直在用这些字符串犯错!!
谢谢你:)。
答案 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)."')";