我正在尝试将以下查询转换为准备好的语句,但到目前为止我没有运气。我附上了我的一个尝试。我的想法是我用它来检查之后使用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的行数?
答案 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。