他们是在做同样的事情,只是不同而已?

除了使用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

Best practice is to stick with prepared statements and 100 for increased security.

另见:Are PDO prepared statements sufficient to prevent SQL injection?

Php相关问答推荐

带有打印和回声的PHP意外命令

在不刷新页面的情况下无法使用JQuery更新id

无法使用DOMPDF在PDF中呈现非ANSI字符

如果再次调用SESSION_START(),会话.gc-max是否会重新启动?或者它是从第一次创建会话开始计算的?

LaravelEloquent 的地方条件父/子与第三模型多对多

在WooCommerce产品变体SKU字段旁边添加自定义输入字段

在Laravel中为表添加前缀,以将它们逻辑地分组

目标类[Set_Locale]不存在.拉威尔

将SVG包含在另一个php生成的SVG中

Select 本地提货时隐藏WooCommerce显示的发货成本

dyld[45923]:未加载库:/usr/local/opt/libavif/lib/libavif.15dylib

在 WooCommerce 中应用优惠券时显示购物车商品折扣金额

.htaccess 重写规则问题

在 vue 自定义渲染器中访问变量

如何在WooCommerce管理产品列表中显示运输类别列

显示时间范围内的可用空位,同时考虑已预订的空位

在 Laravel、Vuejs 和 Inertia 中配置 TypeScript 的问题

为什么 8.0 之前的 PHP 版本拒绝命名空间Random\Namespace作为无效语法?

如何在光速网络服务器中使用 apache ..htaccess

Docker: unixodbc.h 没有这样的文件或目录.已安装 unixodbc-dev 时出现pecl install sqlsrv错误