2017-07-07 108 views
-1

第一,我當前的代碼是更好的方式來在PHP計算結果和逐行讀取

$sql = "SELECT COUNT(id) AS total FROM mytable WHERE something = ".$likethis; 
$query = mysqli_query($connection, $sql); 
$result = mysqli_fetch_object($query); 

如果結果給予1點或更多的數據,那麼我做這個查詢獲取數據

$sql = "SELECT col1, col2, col3 FROM mytable WHERE something = ".$likethis; 

第二個,另一種方法中,我發現如果得到1個或多個,我取的數據被使用此代碼

$totalRow = mysqli_num_rows($query); 

然後。

現在我腦子裏是,第一個是快速計數的數據,然後才做結果。但需要連接兩次數據庫。 第二個比較慢,因爲需要讀取所有數據,但只連接數據庫一次。

我不確定我的意見是否準確,它只是由多少PHP讀取數據庫,並不確定實際上哪一個更好。

或許還有其他更好的辦法做到:
- 檢查多少行有
- 讓行,如果有

+0

你需要計數和查詢中的數據.. ?? –

+1

如果你想同時計數和數據,然後使用'mysqli_num_rows()' –

+2

第二個我認爲在做計數查詢沒有意義。只需執行你的實際查詢並在你的PHP代碼中處理一個空的結果集。 –

回答

1

您可以設置flag做檢查,你可以得到行/行或不行。如果您無法從數據庫flag獲得任何行是真實的。

例如,

$query = mysqli_query($connection,"select * from `test`"); 
$flag = true; 
while($rows = mysqli_fetch_array($query)){ 
    $flag = false; 
    // Do stuff. 
} 
if($flag){ 
    echo "No record found."; 
} 

如果不能得到結果代碼將打印else部分。

+0

這似乎比我的第二種方法更簡單。而且我想我可以忽略某些情況下的標誌變量。 –

+0

我已經使用'flag'來檢查任何行是否從數據庫中獲取。 –

相關問題