在PHP中到处使用预处理语句?(PDO)

Jon*_*Jon 4 php mysql pdo transactions prepared-statement

我将要切换我在几个站点/项目中使用的数据库类,从使用自定义mysql_query方法*到使用PDO和预处理语句.但是我首先提出一个问题 - 我是否想在各处使用预先准备好的陈述?即使在查询只会运行一次的地方?那些我需要做的事情如下:

INSERT INTO `table` (`column`, `column`) VALUES ('value','value'), ('value','value'),('value','value'), etc.
Run Code Online (Sandbox Code Playgroud)

我应该使用单个预准备语句(和单个VALUE),但每次都使用不同的变量执行它,还是应该使用上面的样式?如果我在这里使用准备好的声明,我们说话的表现有多糟糕?在这种情况下我需要使用交易吗?

*我的mysql_query方法类似于预备语句,因为用户可以调用$mysql->Query("SELECT * FROM%s WHERE '%s'='%s'", $var, $var, $var),并且该方法使用自动转义所有内容mysql_real_escape_string.

Mik*_*ike 6

准备好的语句提供了很好的防止SQL注入的保护,它们还为某些类型的查询提供了性能优势.就个人而言,我会到处使用它们.

如果您发现某个特定查询导致性能问题,您可以执行一些分析以跟踪问题的原因,然后根据需要优化代码或查询.但是在遇到问题之前不要尝试进行微量优化.

至于交易,只需在需要时使用它们.例如,当您需要执行一系列全有或全无更新时,如果一个更新失败,则整个批次必须失败.这些对于多对多关系这样的事情非常有用,其中必须更新三个表,并且如果发生故障,您不希望保留部分关系.