将mysql查询转换为预准备语句

时间:2015-06-07 10:47:12

标签: php mysqli 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的行数?

1 个答案:

答案 0 :(得分:1)

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

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

执行后,您可以使用$num_rows属性获取受影响的行数,以防其SELECT语句或其他情况下的$affected_rows属性。

echo $stmt->num_rows;

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

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

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