gpt4 book ai didi

php - mysqli_num_rows() 期望参数通过同一页面上的早期查询起作用

转载 作者:行者123 更新时间:2023-11-29 04:49:40 25 4
gpt4 key购买 nike

我在查询 MySQL 数据库中的表时遇到错误。当传递的变量中没有值时,这是 mysqli_num_rows 的标准:

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in folder/file.php on line 29

问题是我找不到语法错误。我已经看过很多次了。这是我的代码:

$sql_messages = "SELECT * FROM messages WHERE to='$userid'";
$result_messages = $mysqli->query($sql_messages);
$num_rows_messages = mysqli_num_rows($result_messages);

我尝试了一个获取数组,但它给了我类似的错误。我想什么都没有传递到 $result_messages 中。我回显了 $userid 并且它有一个值并且我已经检查了我的数据库并且有一个带有字段“to”的表“messages”。我已连接到正确的数据库,因为我在此查询之前有此代码:

$sql="SELECT * FROM users WHERE firstname='$firstname' && lastname='$lastname'";
$result = $mysqli->query($sql);
$row = mysqli_fetch_array($result);

而且效果很好。这是页面上的第三个查询,是否有某种限制?有没有人看到我忽略的语法错误?谢谢,抱歉,如果这是一个小错误!

最佳答案

这是因为$mysqli->query()返回了 bool 值FALSEaccording to the mysqli::query() docs ,它会在发生错误时执行。您可以通过访问 $mysqli->errno 获得有关错误的更多详细信息。和 $mysqli->error .

我猜测问题的根源在于引用名为to 的列的查询,它是MySQL reserved word。 .尝试用反引号将查询中的单词 to 括起来。像这样:

$sql_messages = "SELECT * FROM messages WHERE `to`='$userid'";

确实如此,但您应该避免命名列和表的保留字。如果可行,请考虑重命名该列。

关于php - mysqli_num_rows() 期望参数通过同一页面上的早期查询起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13392427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com