PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php-有关PDO和MySQL最佳做法的问题大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_489_0@我对PDO有很多疑问…

@H_489_0@>是否应该仅在有要绑定的参数时才使用prepare()?当我需要做一个简单的查询,例如…时,@R_559_10675@用query()吗?
>当我执行更新和删除操作并需要获取受影响的行数时,应该使用exec()还是应该使用PDOStatement-> rowCount()代替?
>当我进行插入,更新和删除操作时,还是在需要进行其他选择时仅使用SELEct时,应该使用closecursor?
> $con = NULL吗?真的关闭了连接?
>将bindParam与foreach结合使用是否可以很好地插入多个插入点?我的意思是性能明智,因为我认为在同一插入上执行(…),(…)更好吗?
>您可以在使用PHP PDO MysqL时向我提供有关性能点的更多信息(URL)吗?如果有人有其他提示,那将非常有用.

解决方法:

@H_489_0@>当我在Zend Framework 1.0中开发DB层时,认情况下使它对所有查询使用prepare / execute.这样做没有什么坏处.* PHP方面有一些开销,而MysqL方面有prepared queries are actually faster.
>我的做法是对所有类型的查询使用query(),并在更新后调用rowCount().您也可以致电SELECTROW_COUNT().
>如果您有结果集中的待处理行或多结果集查询中的待处理结果集,则Closecursor在MysqL中很有用.使用INSERT,updatE,deletE时没有必要.
> PDO_MysqL测试套件使用$con = NULL关闭连接,这是正确的方法.这实际上不会关闭由libMysqLnd管理的持久连接,但这是有意的.
>一次执行一条准备好的INSERT语句的速度不及执行带有多个元组的单个INSERT的速度.但是差异很小.如果要插入大量行,并且性能很重要,则应使用LOAD DATA LOCAL INFILE.有关其他提示,请参见http://dev.mysql.com/doc/refman/5.6/en/insert-speed.html.
>您可以通过Google搜索“ PDO MysqL基准”(例如)来找到各种结果.但最重要的是,选择PDO vs. MysqLi没有明显的胜利者.与其他更重要的优化技术(例如choosing the right indexes)相比,差异很小,以至于它减小了,确保索引适合RAM,并巧妙地使用了应用程序端缓存.

@H_489_0@*有些语句不能在MysqL中作为预备语句运行,但是在每个主要发行版中,此类语句的列表会变小.如果您仍在使用无法通过prepare()运行某些语句的旧版MysqL,那么您应该在数年前升级

@H_489_0@发表您的评论

@H_489_0@是的,在大多数情况下,使用查询参数(例如使用bindValue()和@L_607_43@)被认为是抵御sql注入的最佳方法.

@H_489_0@请注意,在PDO中使用查询参数是一种更简单的方法-您只需将数组传递给execute(),这样就不必麻烦bindValue()或bind@R_912_1@R_419_2481@@了:

@H_489_0@
$sql = "SELECT * FROM myTable WHERE name = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute( array("Bill") );
@H_489_0@您还可以通过以下方式使用命名参数:

@H_489_0@
$sql = "SELECT * FROM myTable WHERE name = :name";
$stmt = $pdo->prepare($sql);
$stmt->execute( array(":name" => "Bill") );
@H_489_0@使用quote()然后将结果插值到查询中也是防止sql注入的一种好方法,但是IMHO使代码更难阅读和维护,因为您总是想弄清楚是否已关闭引号并加了点在正确的地方.使用参数占位符然后传递参数要容易得多.

@H_489_0@在我的演讲SQL Injection Myths and Fallacies中,您可以阅读有关sql注入防御的更多信息.

大佬总结

以上是大佬教程为你收集整理的php-有关PDO和MySQL最佳做法的问题全部内容,希望文章能够帮你解决php-有关PDO和MySQL最佳做法的问题所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: