代码:
$stmt = mysqli_prepare($link, "SELECT * FROM adm_users WHERE users_username = ? AND users_password = ?");
mysqli_stmt_bind_param($stmt, 'ss', $user_adm_name, $user_adm_password);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
mysqli_stmt_fetch($stmt);
$adm_check_log = mysqli_num_rows($stmt);
mysqli_stmt_close($stmt);
返回:
警告:mysqli_num_rows():提供的参数不是有效的MySQL 结果
为什么呢?有人可以帮我解释一下吗?
答案 0 :(得分:0)
您应该检查功能的返回值!
(作为程序员在遇到错误的每种情况下都会这样做)
似乎查询出了问题。因此,将代码更改为:
$result = mysqli_query(...);
if(!$result) {
die(mysqli_error($link);
}
对您正在使用的所有mysqli函数执行相同的操作。
答案 1 :(得分:0)
这仅仅意味着在这里传递的$ stmt的值:
$adm_check_log = mysqli_num_rows($stmt);
的类型不正确。通常它表示您未从查询中返回任何内容,或者出现错误。
尝试输出它以查看您获得的内容:
var_dump($stmt);
用你更换你拥有的东西。报告了什么错误?
if($stmt = mysqli_prepare($link, "SELECT * FROM adm_users WHERE users_username = ? AND users_password = ?")) {
$stmt->bind_param("ss", $user_adm_name, $user_adm_password);
$stmt->execute();
printf("Error: %d.\n", $stmt->error);
$stmt->bind_result($foo);
$stmt->fetch();
var_dump($foo);
$stmt->close();
}