使用
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,
]);
execute_query()
只是一个快捷方式,允许您将 prepare()
、bind_param()
、execute()
和 get_result()
组合到单个调用中。
由于您没有
mysqli_stmt
对象,因此有关查询的状态信息将放入 $db
对象中。例如,您可以使用 $stmt->affected_rows
,而不是 $db->affected_rows
。
execute_query()
是其中最简单的。它准备并执行查询,并返回一个 mysqli_result
对象或布尔值。如果您只想执行一个简单的查询并获取结果,则可以使用它。
prepare()
返回一个 mysqli_stmt
对象,您可以在方便时执行该对象。它比以前的选项更强大。例如,当在具有不同值的循环中执行相同的准备好的语句时,它很有用。
您可以将所有参数作为数组传递给
execute()
或 execute_query()
,但如果您想要更稳健,您可以使用 bind_param()
通过引用语句对象来绑定变量。它的用途并不多,但如果你需要它,它就在那里。这也是 PHP 8.1 之前唯一可用的选项。