📜  如何使用 get_result 正确的准备语句 (1)

📅  最后修改于: 2023-12-03 15:38:00.624000             🧑  作者: Mango

如何使用 get_result 正确的准备语句

在使用 get_result 方法来获取 SQL 查询结果时,我们需要先正确的准备语句。这里我们将讨论准备语句的正确用法,以及实现具体的 SQL 查询。

准备语句的基本语法

准备语句是一种预编译的 SQL 语句,它以 ? 作为占位符,接受后续的参数传递。我们需要通过 prepare 函数来将 SQL 语句转换为准备语句。

$stmt = $mysqli->prepare("SELECT * FROM users WHERE id > ?");

在我们的 SQL 语句中,我们引入了一个占位符 ?,表示这是一个参数的位置。此时我们需要在 execute 前,通过 bind_param 函数,对这个参数进行赋值。

$stmt->bind_param('i', $id);

bind_param 函数中,我们第一个参数为参数的类型,接下来的参数为我们需要绑定的实际值。例如,如果参数类型为整型,我们需要在第一个参数中填写 i,如果参数类型为字符串,则为 s,以此类推。

正确的参数传递

在使用 get_result 获取结果集之前,我们还需要有一个正确的参数传递方式。我们不能直接将参数传递到 get_result 函数中,而是需要通过 bind_result 函数中的参数列表来摆放我们所需要的结果。

$stmt->bind_result($id, $name, $email);

bind_result 函数中,我们将按照 SQL 语句的结果摆放相应的变量,这样,我们就能正确的获取 SQL 查询的结果集。

实例代码

下面是一个完整的代码示例,以便更好地说明准备语句的使用:

$id = 10;

$stmt = $mysqli->prepare("SELECT * FROM users WHERE id > ?");
$stmt->bind_param('i', $id);
$stmt->execute();
$stmt->bind_result($id, $name, $email);

while ($stmt->fetch()) {
    echo $id . " " . $name . " " . $email . "<br />";
}

$stmt->close();
总结

通过准备语句,我们可以更好地预防 SQL 注入漏洞,并且在执行相同的 SQL 语句时,也能够提高数据库操作的效率。通过正确的使用 bind_parambind_result 函数,我们可以很好地获取 SQL 查询的结果集。