$ db->查询($ query)和$ result-> num_rows之间的差异

时间:2013-02-05 20:27:29

标签: php object mysqli

我是面向对象的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'];
}

&GT;

3 个答案:

答案 0 :(得分: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()方法,该方法将一行数据作为数组返回,并将其存储在{ {1}}。

答案 1 :(得分:0)

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

你可以在这看一下,以便更好地了解传回的内容。 http://www.php.net/manual/en/class.mysqli-result.php

答案 2 :(得分:0)

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

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