Php $db->;查询($query)和$result->;行数

Php $db->;查询($query)和$result->;行数,php,object,mysqli,Php,Object,Mysqli,我不熟悉面向对象的php。我明白这句话的意思 $result = $db->query($query); 这里$db是引用类mysqli实例的对象。对吧? 但我不明白 $total_num_rows = $result->num_rows; 及 我知道他们做什么。但我无法理解为什么它写的是$result-> 整个脚本: <?php $host = "localhost"; $username = "root"; $password = ""; $dbname = "com

我不熟悉面向对象的php。我明白这句话的意思

$result = $db->query($query);
这里$db是引用类mysqli实例的对象。对吧?

但我不明白

$total_num_rows = $result->num_rows;

我知道他们做什么。但我无法理解为什么它写的是$result->

整个脚本:

<?php

$host = "localhost";
$username = "root";
$password = "";
$dbname = "compdb";

@ $db = new mysqli($host, $username, $password, $dbname);

if(mysqli_connect_errno())
{
    die("Connection could not be established");
}

$query = "SELECT company_id FROM company_basic_details WHERE company_name = 'ABC'";
$result = $db->query($query);

$total_num_rows = $result->num_rows;

echo "The Results Are : <br>";

while($row = $result->fetch_array())
{
    echo $row['company_id'];
}

来自$db的查询正在传回包含您的结果的mysqli_result对象的实例,这就是为什么您使用来自$result而不是$db的方法。$db实例仅包含您的请求


你可以看看这里,更好地了解传递回来的信息

当您执行查询时,您将得到一个新对象作为响应(Mysqli_Result的实例),前提是不存在将返回false的查询错误


此新对象表示查询的结果。但不是数据库连接本身。它有一个属性
$result->num_rows
,用于获取结果集中的行数
$result->fetch_array()
将在每次调用它(使用内部指针)时返回一个新行(作为数组)。

假设您是OOP(面向对象编程)的新手,我将尽我所能带您完成

当您得到一个连接对象
$db
时,您可以使用它来调用实例方法

表达式
$result=$db->query($query)
表示使用
$db
对象调用查询方法,然后传入上面创建的
$query
。因此,
->操作符
表示在这种情况下调用方法的对象

此语句现在创建一个
$result
对象,该对象用于
$total\u num\u rows=$result->num\u rows。此行使用
$result
对象,获取行数并将其存储在变量
$total\u num\u rows
中。这就像是在习惯于数组的情况下获取数组的长度


在您提到的行中,
$row=$result->fetch\u array()
,使用
$result
对象调用
fetch\u array()
方法,该方法将一行数据作为数组返回,并将其存储在
$row

中,您是否更熟悉调用函数并将$result传递给它?这就是OOP。您可以对对象执行这些方法。结果是一个结果集,它可以被迭代,它可以告诉你行数。熟悉@ficuscr将有助于您了解$result在这里是什么?它是一个数组吗?或者它可以被称为一个物体?@StacyJ它是一个物体。
$db
实例上的
query
方法返回一个对象作为其响应
var\u dump
它,您告诉我:)它实际上是一个对象。其中之一再次,看看我链接的类文档。清楚地显示返回的对象,然后依次显示可用于该对象的方法。只需编辑以澄清一点,因为OP似乎有点混淆它是数组还是对象
<?php

$host = "localhost";
$username = "root";
$password = "";
$dbname = "compdb";

@ $db = new mysqli($host, $username, $password, $dbname);

if(mysqli_connect_errno())
{
    die("Connection could not be established");
}

$query = "SELECT company_id FROM company_basic_details WHERE company_name = 'ABC'";
$result = $db->query($query);

$total_num_rows = $result->num_rows;

echo "The Results Are : <br>";

while($row = $result->fetch_array())
{
    echo $row['company_id'];
}