我将把在多个站点/项目中使用的数据库类从使用自定义 mysql_query 方法* 切换到使用 PDO 和准备好的语句。不过我首先有一个问题 - 我想使用准备好的语句吗到处?即使在查询只运行一次的地方?我需要做类似以下事情的情况该怎么办:
INSERT INTO `table` (`column`, `column`) VALUES ('value','value'), ('value','value'),('value','value'), etc.
我应该使用单个准备好的语句(和单个值),但每次使用不同的变量执行它,还是应该使用上面的样式?如果我确实在这里使用准备好的语句,我们所说的性能损失有多严重?在这种情况下我需要使用交易吗?
*我的 mysql_query 方法类似于用户可以调用的准备好的语句$mysql->Query("SELECT * FROM
%sWHERE '%s'='%s'", $var, $var, $var)
,并且该方法会自动转义所有内容mysql_real_escape_string
.
准备好的语句可以很好地防止 SQL 注入,并且还可以为某些类型的查询提供性能优势。就我个人而言,我会在任何地方使用它们。
如果您发现特定查询导致性能问题,您可以进行一些分析来追踪问题的原因,然后根据需要优化代码或查询。但在出现问题之前不要尝试进行微观优化。
至于交易,只需要在需要的时候使用即可。例如,当您需要执行一系列“全有或全无”更新时,如果其中一个更新失败,则整个更新都必须失败。这些对于多对多关系之类的事情很有用,其中必须更新三个表,并且您不希望在发生故障时保留部分关系。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)