num_rows在php / mysqli中不起作用

时间:2016-08-27 14:37:05

标签: 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/>';                                
     }
    
     }
    
  3. 问题是num_rows == 1不返回true,尽管该行的表中存在匹配。

    此外,如果我强行评估为num_rows == 0,它会回应“代码覆盖率”,但会附加一些错误。我不明白为什么尽管有一行,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
    

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

2 个答案:

答案 0 :(得分:1)

看看你的表达:class Foo { var $callbacks = array(); function __construct() { $class = $this; $this->callbacks[] = function($arg) use ($class) { return $class->bar($arg); }; } function bar($arg) { return $arg * $arg; } }

您首先将($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 设置为等于行数?这是一个简单的案例,可以了解代码的每一行实际上是做什么的。

答案 1 :(得分:0)

替换你的if条件

if(($getFullName = $getFullName->num_rows) == 1)

if((getFullName = mysqli_num_rows($getFullName)) == 1)

有关mysqli_num_rows函数的更多信息,请访问click here