2013-06-04 125 views
-1

我的老闆最近要求我修復一些PHP代碼,但那不是我平時的任務,而且在理解原代碼方面有一些問題。瞭解簡單的php代碼

所以,這是我得到:

//$query is set here 
if ($result = mysql_query($query, $db)) { 
    $number = mysql_num_rows($result); 
    if ($number == 0) { 
    echo 'Error!'; 
    } 
    else { 
    // do something 
    } 
} // etc 

我不知道那的第一行代碼做一些事情。 他爲什麼這樣寫呢?我認爲無論如何,它總會進入第一個'如果'的狀態,我是否正確? 在此先感謝。

+0

如果出現錯誤,函數mysql_query將返回FALSE。所以,想象一下'if($ result = 5/0){/ *不會因爲除零而通過* /}' – enenen

+2

@enenen這不是一個好的類比,因爲這樣做會因爲不同的原因而失敗,而不是簡單的返回'false'。 – deceze

+0

@deceze是的,你說得對,當然。 – enenen

回答

3

我覺得無論如何我都會輸入第一個'如果'的條件,我正確嗎?

mysql_query的返回值將被分配給$result。然後這個價值將被驗證爲真實。

如果查詢有任何錯誤,那麼它將是錯誤的。

+0

謝謝,我想我現在明白了。 –

2
if ($result = mysql_query($query, $db)) { 

這是檢查是否$result將返回true,所以我們可以繼續,$return只是一個使用mysql_query命令,並通過爲兩個變​​量查詢$query本身和連接參數$db數據庫查詢的執行。如果這將返回false,這將意味着有查詢中的錯誤

我寧願指出你注意mysql_query函數,你正在使用。他們已被棄用,不再manteined,讓你更好的瞭解或者PDOmysqli

+0

謝謝。是的,我們正計劃儘快轉向mysqli,這只是對簡單指令的一個小修復。 –

+0

@AlanPiralla歡迎你 – Fabio

1
//$query is set here 
if ($result = mysql_query($query, $db)) { 

的這部分代碼聲明什麼數據庫查詢應該是,並嘗試運行它。 myssql_query運行數據請求(或嘗試將數據放入數據庫),但它可能沒有正確格式化,或者數據庫可能有錯誤,或者它可能位於不同的服務器上,並且該服務器已關閉,或者可能存在數據不符合數據庫連接的限制的問題。

在任何情況下,它都會嘗試從數據庫請求數據,並將該數據存入$result。但是 - 如果將數據放入數據庫時​​出現問題,那麼它沒有任何數據要放入$result,並且if語句會將其視爲false,而不會進入第一個if循環。

$number = mysql_num_rows($result); 
    if ($number == 0) { 

某種程度上,這是做了類似的事情。前面的程序員基本上聲明,無論發生什麼情況,$query對數據(或輸入數據)的數據庫請求都應返回至少一行數據,無論如何。如果一切運行正常,服務器正在運行,數據庫正在運行,並且查詢未被拒絕...但沒有返回任何數據行...然後仍然有錯誤。也許代碼中存在邏輯錯誤,或許在用戶輸入字段中某些格式不正確的數據,誰知道?但無論如何,如果什麼都沒有回來,他想表明這裏有什麼錯誤。

+0

也感謝你。 –

+0

很高興幫助別人理解。我們都去過那裏。 –