我试图像这样逐一获取特定的行:
while($getRowCount = $query->fetch_assoc()){
$uid = $getRowCount['ID'];
接下来,我在第二个表中选择相应匹配的行,如下所示:
$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,它会回应“代码覆盖率”,但会附加一些错误。我不明白为什么尽管有一行,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
有关如何解决此问题的任何建议都会有很大帮助。
答案 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