加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP PDO准备查询

发布时间:2020-12-13 18:22:06 所属栏目:PHP教程 来源:网络整理
导读:我在PDO上阅读并在StackOverFlow上搜索了关于pdo和prepare语句的内容.我想知道什么是好处或使用准备声明.例如: $sql = 'SELECT name,colour,calories FROM fruit WHERE calories :calories AND colour = :colour';$sth = $dbh-prepare($sql,array(PDO::ATTR
我在PDO上阅读并在StackOverFlow上搜索了关于pdo和prepare语句的内容.我想知道什么是好处或使用准备声明.例如:
$sql = 'SELECT name,colour,calories FROM fruit WHERE calories < :calories AND colour = :colour';
$sth = $dbh->prepare($sql,array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':calories' => 150,':colour' => 'red'));
$red = $sth->fetchAll();

VS

$sql = "SELECT name,calories FROM fruit WHERE calories < $calories AND colour = $colour";
$result = $connection->query($query);
$row = $result->fetch(PDO::FETCH_ASSOC);

两个查询都将返回相同的结果,所以为什么使用准备,对我来说看起来它会慢,因为你必须执行额外的步骤.

谢谢

准备好的陈述是:

>更安全:PDO或底层数据库库将负责为您转义绑定变量.如果始终使用预准备语句,则永远不会容易受到SQL注入攻击.
>(有时)更快:许多数据库将缓存预准备语句的查询计划,并通过符号引用预准备语句,而不是重新传输整个查询文本.如果您只准备一次语句然后重复使用带有不同变量的预准备语句对象,则这一点最为明显.

在这两个中,#1更为重要,并使准备好的陈述不可或缺!如果你没有使用准备好的语句,唯一明智的做法就是在软件中重新实现这个功能. (当我被迫使用mysql驱动程序并且无法使用PDO时,我已多次这样做了.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读