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