我是面向对象的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;
答案 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()
每次调用时都会返回一个新行(作为数组)(使用内部指针)。