execute_query 和prepare+execute 有什么区别?

问题描述 投票:0回答:2

使用

execute_query()
[1] 或先使用
prepare()
然后使用
execute()
[2] 有什么区别?我们何时使用绑定参数?为什么?就像示例 [2] 中一样,我们已经在执行中给出了变量,那么绑定参数什么时候更有用?

[1]

$stmt = $db->execute_query($Update, [$Date, $Email]);

[2]

$stmt = $db->prepare("INSERT INTO Users (Username, Email, Password, Creation_Date, VIP, Admin) VALUES (?,?,?,?,?,?)");
$stmt->execute([
    $Username, 
    $Email,
    $Password,
    $Creation_date,
    $VIP,
    $Admin,
]);
php mysqli
2个回答
4
投票

execute_query()
只是一个快捷方式,允许您将
prepare()
bind_param()
execute()
get_result()
组合到单个调用中。

由于您没有

mysqli_stmt
对象,因此有关查询的状态信息将放入
$db
对象中。例如,您可以使用
$stmt->affected_rows
,而不是
$db->affected_rows


0
投票

execute_query()
是其中最简单的。它准备并执行查询,并返回一个
mysqli_result
对象或布尔值。如果您只想执行一个简单的查询并获取结果,则可以使用它。

prepare()
返回一个
mysqli_stmt
对象,您可以在方便时执行该对象。它比以前的选项更强大。例如,当在具有不同值的循环中执行相同的准备好的语句时,它很有用。

您可以将所有参数作为数组传递给

execute()
execute_query()
,但如果您想要更稳健,您可以使用
bind_param()
通过引用语句对象来绑定变量。它的用途并不多,但如果你需要它,它就在那里。这也是 PHP 8.1 之前唯一可用的选项。

© www.soinside.com 2019 - 2024. All rights reserved.