📅  最后修改于: 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_param
和 bind_result
函数,我们可以很好地获取 SQL 查询的结果集。