0

我是面向对象的 php 新手。我明白这条线是什么意思

$result = $db->query($query);

这里 $db 是引用类 mysqli 实例的对象。正确的?

但是我不理解

$total_num_rows = $result->num_rows;

while($row = $result->fetch_array())

我知道他们做什么。但是我无法理解为什么它是用 $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'];
}

?>

4

3 回答 3

1

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

当你得到$db它时,你已经得到了一个连接对象,你可以用它来调用实例方法。

表达式$result = $db->query($query)是指使用$db对象调用查询方法,然后传入$query上面创建的那个。所以-> operator表示在这种情况下调用方法的对象。

此语句现在创建一个$result用于$total_num_rows = $result->num_rows;. 此行使用$result对象并获取行数并将其存储在变量中$total_num_rows。如果您习惯于数组,这就像获取数组的长度一样。

在您谈到的那一行中$row = $result->fetch_array(),该$result对象用于调用将fetch_array()单行数据作为数组返回的方法,并将其存储在$row.

于 2015-04-27T06:08:45.823 回答
0

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

您可以查看此处以更好地了解正在传回的内容。http://www.php.net/manual/en/class.mysqli-result.php

于 2013-02-05T20:33:19.890 回答
0

当您进行查询时,您将获得一个新对象作为响应(Mysqli_Result 的实例),假设没有查询错误将返回 false。

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

于 2013-02-05T20:33:27.617 回答