我想看看我的查询是否成功(虽然我成功地执行了insert查询),但是在第25行中得到了这个错误:"mysqli_num_rows()希望参数1是mysqli_result,布尔值,考虑到“我已经检查了每一行,我甚至使用了mysqli_affected_rows,失败了。感谢您的帮助,这是我的代码:
<?php
include "connection.php";
$fn = $_POST['first_name'];
$ln = $_POST['last_name'];
$uname = $_POST['username'];
$pwd = $_POST['password'];
$stat = $_POST['status'];
if($fn=="" || $ln=="" || $uname=="" || $pwd=="" || $stat==""){
echo "ALL FIELD MUST BE FILLED!";
}
else {
$sql = "SELECT * from user WHERE username='$uname'";
$result = mysqli_query($conn, $sql);
$number = mysqli_num_rows($result);
if ($number != 0) {
echo "Username $uname is not available";
}
else {
$options = ['cost' => 12];
$pwd = password_hash($pwd, PASSWORD_BCRYPT, $options);
$query = "INSERT INTO user
(username,password,first_name,last_name,status) VALUES
('$uname','$pwd','$fn','$ln','$stat')";
$res = mysqli_query($conn, $query);
$nmb = mysqli_num_rows($res);
echo $nmb;
}
}
?> 发布于 2017-05-21 16:11:48
$nmb = mysqli_num_rows($res);无法工作,因为$res是INSERT查询的结果。mysqli_query说:
失败时返回FALSE。为了成功地选择、显示、描述或解释查询,mysqli_query()将返回一个mysqli_result对象。对于其他成功的查询,mysqli_query()将返回TRUE。
因此,$res将始终是false或true,您将无法在其上使用mysqli_num_rows()或mysqli_affected_rows()。问题是,无论如何,在这里计数行是没有意义的。您正在尝试插入一条记录,所以它要么是1,要么是零,所以正确或错误的结果应该足以检测查询是否成功。
发布于 2017-05-21 16:10:00
改变这一点:
$res = mysqli_query($conn, $query);
$nmb = mysqli_num_rows($res);
echo $nmb; 为此:
$res = mysqli_query($conn, $query);
if ($res) {
echo "Insert ok";
}
else
{
echo "Problem to insert";
}https://stackoverflow.com/questions/44098791
复制相似问题