将 mysql 查询转换为准备好的语句

Turning mysql query into prepared statement

我正在尝试将以下查询转换为准备好的语句,但到目前为止我运气不好。我附上了我的一个尝试。这个想法是我用它来检查之后使用 mysqli_num_rows 返回了多少行。

 $sql2=mysqli_query($bd, "SELECT address FROM member WHERE address='".$address."'");

这是我创建预准备语句的尝试。

$ustmt = $bd->prepare("SELECT username FROM member WHERE username = ?");
$ustmt->bind_param("s", $username);
$sql2 = $ustmt->execute();

这是正确的吗?如果是这样,我该如何检查返回 $sql2 的行数?

是的,你的准备和执行是正确的。

执行调用returns一个boolean值,如果成功则为true否则false(如果false$stmt->error 属性 将设置错误信息。
这值得在继续之前检查,因为如果它为假,则不会有结果。
与准备工作相同,如果 $mysqli->prepare(...) 调用 returns false,则 $mysqli->error 将设置错误消息。

执行后,您可以通过 $num_rows 属性(如果是 SELECT 语句)或 $affected_rows 属性 在其他情况下。

echo $stmt->num_rows;

或者,您可以使用 get_result() 方法从语句中获取 mysqli_result 对象。
mysqli_result 对象包含 public 字段 $num_rows,因此您可以通过以下方式检查行数:

$res = $stmt->get_result();
echo $res->num_rows;

对于 mysqli_result 对象中的其他方法,我建议检查 docs