他们俩都做同一件事,只是做事不同吗?
除了使用prepare
之间还有什么区别
$sth = $db->query("SELECT * FROM table");
$result = $sth->fetchAll();
和
$sth = $db->prepare("SELECT * FROM table");
$sth->execute();
$result = $sth->fetchAll();
?
query
运行标准SQL语句,并要求您正确转义所有数据,以避免SQL注入和其他问题。
execute
运行一个准备好的语句,该语句使您可以绑定参数,以避免需要转义或引用参数。execute
如果您多次重复查询,效果也会更好。准备语句的示例:
$sth = $dbh->prepare('SELECT name, colour, calories FROM fruit
WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories);
$sth->bindParam(':colour', $colour);
$sth->execute();
// $calories or $color do not need to be escaped or quoted since the
// data is separated from the query
最佳实践是坚持准备好的语句并execute
提高安全性。
问题内容: 我想知道使用PHP PDO执行什么查询。我有: 我想得到类似的东西: 可能吗?谢谢 问题答案:
问题内容: 我经常看到使用PDO 或使用PDO的代码。是否只是出于某种原因而将论点转为皱眉? 我知道实际上绑定到了变量,并且可以设置两个方法都绑定的参数类型,但是如果仅插入字符串怎么办? 我经常看到上面的内容,但是我个人更喜欢: 它不是那么冗长,从视觉上来说,让输入“进入”查询对我来说更有意义。但是,我几乎看不到它的使用。 当您不必利用前者的特殊行为时,是否有理由更喜欢使用方法而不是传递参数? 问
问题内容: 从PHP 5.3版开始,已对驱动程序进行了补充。它引入了对多个查询的支持。 但是,如果传递了多个查询,我无法弄清楚如何获得两个结果集。这两个查询都已执行,不可能是第二个查询刚刚被转储。 返回值: 问题答案: 原来,您需要使用。 这将返回第二个查询的结果。 这是一个有点奇怪的实现。如果多查询语句仅将两个结果集返回在一个数组下,那肯定会更容易。但是,优点是此实现允许使用不同的FETCH样式
问题内容: 我正在重新编写一些PHP代码以使用PDO进行数据库访问,但是我遇到了“ WHERE … IN”查询问题。 我正在尝试根据检查表单上的哪些项目从数据库中删除某些内容。列表的长度和内容将有所不同,但是对于此示例,请想象是这样的: 然后查询如下所示: 当我这样做时,仅第一个ID被删除。(我认为它会抛出逗号及其后的所有内容。) 我也尝试过制作一个数组,但是它不会删除任何东西。 在PDO准备好的
问题内容: 我的问题是 我尝试在两个都有id字段的表之间做一个简单的JOIN。我的结果是一个stdClass对象,因为我使用的是PDO。有谁知道我该如何区分第一个表的ID和第二个表的ID? 代码 如果我尝试使用$ products-> id,它将显示 类别 表的ID 。如果它是一个数组,则可以使用$ products [‘p.id’],我需要一个替代方法。 非常感谢。 问题答案: 您必须为一个表或
一旦你建立好数据模型之后,django会自动生成一套数据库抽象的API,可以让你执行增删改查的操作。这篇文档阐述了如何使用这些API。关于所有模型检索选项的详细内容,请见数据模型参考。 在整个文档(以及参考)中,我们会大量使用下面的模型,它构成了一个博客应用。 from django.db import models class Blog(models.Model): name = mo