if (mysqli_num_rows($result1) > 0){ $sql2="UPDATE Fruit SET buyingprice=$Fprice,number=$Fweight,sellingprice=$FsPrice WHERE Fruittype='$FName'"; $result2 = mysqli_query($conn, $sql2); if (mysqli_num_rows($result2) > 0){ $reseult2=mysqli_fetch_row($result2); header("Location:edit_success.php"); exit();出现Uncaught TypeError: mysqli_num_rows(): Argument #1 ($result) must be of type mysqli_result怎么解决,使用换一个名称定义result无法解决
时间: 2023-06-27 22:02:18 浏览: 179
根据错误提示,`mysqli_num_rows()` 函数的第一个参数必须是 `mysqli_result` 类型的数据,但是你的代码中 `$result2` 可能不是这种类型的数据,导致出现错误。
你可以尝试在执行 SQL 语句时检查返回的结果是否是 `mysqli_result` 类型的数据,例如:
```php
$sql2="UPDATE Fruit SET buyingprice=$Fprice,number=$Fweight,sellingprice=$FsPrice WHERE Fruittype='$FName'";
$result2 = mysqli_query($conn, $sql2);
if ($result2 !== false && mysqli_num_rows($result2) > 0){
$reseult2=mysqli_fetch_row($result2);
header("Location:edit_success.php");
exit();
}
```
这里加了一个条件判断,如果 `$result2` 不是 `false` 并且是 `mysqli_result` 类型的数据,才执行后续的操作。
另外,你代码中有一个拼写错误,`$reseult2` 应该改为 `$result2`。
相关问题
mysqli_num_rows() expects parameter 1 to be mysqli_result, object given in
mysqli_num_rows() 函数用于获取 MySQLi 查询结果中行的数量。当你看到这个错误消息 "mysqli_num_rows() expects parameter 1 to be mysqli_result, object given",这意味着你在尝试调用这个函数的时候,传递给它的第一个参数不是一个有效的查询结果(mysqli_result 类型),而是一个对象。
MySQLi 结果集通常是由执行 SQL 查询后得到的,例如 `$result = $mysqli->query($sql)` 这样的操作返回的就是 mysqli_result 对象。如果你直接将查询语句当作参数传递给 num_rows(),或者传递了一个非查询的结果(比如数据库连接本身或者其他类型的对象),就会触发这个错误。
修复此问题的方法是先确保执行了查询,并存储查询结果到一个变量中,然后再使用 num_rows()。正确的用法应该是:
```php
$sql = "SELECT * FROM table";
$result = $mysqli->query($sql);
if ($result) {
$row_count = mysqli_num_rows($result); // 现在$row_count应该可以正常获取行数
} else {
// 处理查询失败的情况
}
```
阅读全文