当我运行时:
if ($result->num_rows() > 0) {
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 results";
}
$conn->close();
我收到以下错误:
调用未定义的方法mysqli_result :: num_rows()
我认为错误来自num_rows()
方法,但无法弄清楚出了什么问题。据我所知,对象在OOP中使用$obj->foo()
来调用方法,但是当我删除num_row
的括号时:
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 results";
}
$conn->close();
这段代码按预期运行。
答案 0 :(得分:0)
第二个代码块工作的原因是因为num_rows
是对象的属性。使用num_rows()
作为方法会导致未定义的方法错误,因为该名称没有方法。
一个例子:
class Dog {
public weight;
public age;
public function __construct($weight, $age)
{
$this->weight = $weight;
$this->age = $age;
}
public function bark()
{
...
}
public function gain_weight()
{
$this->weight++;
}
}
$dog = new Dog(10, 0);
$dog->gain_weight();
echo $dog->weight;
gain_weight
是一种方法,但weight
是$dog
对象的属性。
在旁注中,if ($result->num_rows > 0)
与if ($result->num_rows)
相同,因为如果$result->num_rows
等于0,则语句将评估为false。