php - num_rows 在 php/mysqli 中不起作用

标签 php mysql mysqli

  1. 我正在尝试像这样逐行获取特定行:

    while($getRowCount = $query->fetch_assoc()){
    
    $uid = $getRowCount['ID'];
    
  2. 接下来,我在第二个表中选择相应匹配的行,如下所示:

    $getFullName = $db->prepare("SELECT * from registered_users where id = ?");
    $getFullName->bind_param("i",$uid);
    $getFullName->execute();
    if(($getFullName = $getFullName->num_rows) == 1){
        echo 'code reach';
        $getname = $getFullName->fetch_assoc();
        $FirstName = $getname['first_name'];
        $LastName = $getname['last_name'];
        echo '
          <br/>   
          <div id ="connect" style="font-weight:bold; font-size: 15px; color: #CF0B05;">
          <strong>'.$FirstName.' '.$LastName.'</strong>
          </div><hr/>';                                
     }
    
     }
    

问题是 num_rows == 1 不会返回 true,尽管表中有该行的匹配项。

此外,如果我强行计算 num_rows == 0,它会回显“code reach”但自身会附加一些错误。我不明白为什么尽管有一行,但 num_rows == 1 不返回 true。

 Notice: Trying to get property of non-object in /var/www/html/pages.php on line 634

 Fatal error: Call to a member function fetch_assoc() on integer in /var/www/html/pages.php on line 635

有关如何解决此问题的任何建议都会有很大帮助。

最佳答案

看看你的表达式:($getFullName = $getFullName->num_rows) == 1

您首先将 $getFullName 设置为等于行数(整数),然后查看它是否等于 1。然后您稍后尝试将 $getFullName 作为对象访问:

$getname = $getFullName->fetch_assoc();

所以你当然会得到错误:

 Fatal error: Call to a member function fetch_assoc() on integer in /var/www/html/pages.php on line 635

为什么要将 $getFullName 设置为等于行数?这是了解每一行代码实际作用的简单案例。

关于php - num_rows 在 php/mysqli 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39182288/

相关文章:

php - 哪个是检测浏览器语言并将301重定向到主页的最友好的seo方法

php - XAMPP - 服务器和客户端无法通信

mysql - 按比率计数,然后按 SQL 分组

php - mysqli 无法向 mysql 数据库插入和更新查询

PHP 5.6 MySQL foreach 查询返回相同的值

php - 插入文本包含保留字?

mysql - mysql中如何计算时间差

PHP MySQL如何将数据库输入从stripslashes转换为参数

PHP MySQL 查询不起作用,但可以从终端运行

PHP/MySQL - 未捕获 mysqli_sql_exception : MySQL server has gone away