2013-02-05 28 views
0

之間的區別我是面向對象的php的新手。我明白這句話的意思是什麼

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

這裏$ db是引用類mysqli的一個實例的對象。對?

但我不明白

$total_num_rows = $result->num_rows; 

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

我知道他們在做什麼。但是,不能換我的頭周圍爲什麼它用$結果寫 - > ...

整個腳本:

<?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']; 
} 

>

+0

你更熟悉說調用一個函數並將$ result傳遞給它?這正是OOP所在。您針對對象執行這些方法。結果是一個結果集,它可以迭代,它可以告訴你行數。有助於熟悉[mysqli的接口](http://php.net/manual/en/class.mysqli.php)。 – ficuscr

+0

@ficuscr什麼是$結果在這裏?它是一個數組?或者它可以被稱爲一個對象? –

+0

@StacyJ這是一個對象。 '$ db'實例上的'query'方法返回一個對象作爲它的響應 –

回答

0

從$ DB的查詢傳回一個實例?一個包含結果的mysqli_result對象,這就是爲什麼您要使用$ result而不是$ db的方法。您的$ db實例僅包含您的請求。

你可以看看這裏,以更好地理解傳遞回來的東西。 http://www.php.net/manual/en/class.mysqli-result.php

0

當你做一個查詢時,你會得到一個新的對象作爲一個響應(Mysqli_Result的實例),假設沒有查詢錯誤將返回false。

這個新對象表示查詢的結果。但不是數據庫連接本身。它有一個屬性$result->num_rows來獲取結果集中的行數。每次調用它時(使用內部指針),$result->fetch_array()將返回一個新行(作爲數組)。

+0

剛剛編輯來澄清一點,因爲OP似乎在數組或對象之間稍有混淆 –

1

假設您是OOP(面向對象的編程)的新手,我會盡力爲您提供最好的幫助。

當你得到$db這是一個連接對象,你可以使用它來調用實例方法。

表達式$result = $db->query($query)指的是使用$db對象調用查詢方法,然後傳遞上面創建的$query。所以-> operator表示在這種情況下調用方法的對象。

此聲明現在創建一個用於$total_num_rows = $result->num_rows;$result對象。該行使用$result對象並獲取行數並將其存儲在變量$total_num_rows中。這就像是習慣數組的時候獲取數組的長度。

在你談到,$row = $result->fetch_array()線,$result對象用於調用fetch_array()方法,它返回數據的單列作爲數組和你存儲在$row