我很快就会开始一个新项目并开始使用编码标准。我总是写这样的SQL语句:
$sql = sprintf("INSERT INTO users (name) VALUES ('%s')", $name);
我想知道使用其中一种方法是否有任何表现:
$sql = "INSERT INTO users (name) VALUES ('".$name."')";
$sql = "INSERT INTO users (name) VALUES ('$name')";
:这种性能差异是否随着更多“参数”的增加而波动(如第一行代码的情况)?
感谢。
答案 0 :(得分:4)
是的,这会提高性能。 sprintf是一个附加函数调用,你的字符串必须扫描%s,这需要额外的时间。
使用字符串concat运算符(。)的第二个选项更快,但第三个选择,只是将字符串变量放在字符串中是最快的,因为PHP执行了其他优化。
无论如何,在调查PHP如何处理字符串连接及其执行方式时,您应该永远不要创建这样的SQL查询,因为它会打开SQL注入的代码。首先将mysql_real_escape()应用于您的参数或使用预准备语句。
答案 1 :(得分:1)
我的测试没有显示$a $b
比$a . ' ' . $b
更快 - 有时甚至更慢。
但两者都是边缘的。通常,当您有三个或更多变量时,您需要sprintf
。