gpt4 book ai didi

php - 在 PHP 中到处使用准备好的语句? (PDO)

转载 作者:可可西里 更新时间:2023-11-01 07:17:05 24 4
gpt4 key购买 nike

我打算将我在多个站点/项目中使用的数据库类从使用自定义 mysql_query 方法* 切换到使用 PDO 和准备好的语句。但是我首先有一个问题——我是否想在所有地方使用准备好的语句?即使在查询只会运行一次的地方?如果我需要执行以下操作,情况会怎样:

INSERT INTO `table` (`column`, `column`) VALUES ('value','value'), ('value','value'),('value','value'), etc.

我应该使用单个准备好的语句(和单个 VALUE),但每次都使用不同的变量执行它,还是应该使用上面的样式?如果我在这里使用准备好的语句,我们谈论的性能损失有多严重?在这种情况下我需要使用交易吗?

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

最佳答案

准备好的语句对 SQL 注入(inject)提供了很好的保护,并且它们还为某些类型的查询提供了性能优势。就个人而言,我会在任何地方使用它们。

如果您发现特定查询导致性能问题,您可以进行一些分析以找出问题的原因,然后根据需要优化代码或查询。但是,在出现问题之前,不要尝试进行微优化。

至于事务,需要的时候就用吧。例如,当您需要执行一系列全有或全无更新时,如果其中一个失败,那么整个批处理都必须失败。这些对于诸如必须更新三个表的多对多关系之类的事情很有用,并且您不希望在发生故障时保留部分关系。

关于php - 在 PHP 中到处使用准备好的语句? (PDO),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6743770/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com