2010-11-10 105 views
0

任何人都可以幫助我找出下面給出的php代碼。無法理解php代碼

function do_the_query($db, $query) 
{ 
    $result = mysql_db_query($db, $query) or print("$query<BR>" . "<B>" . mysql_errno() . ": " . mysql_error() . "</B><BR>\r\n<BR>\r\n"); 
    return $result; 
} 

/* funzione frontend per generare numeri pseudo-casuali */ 
function random($max) 
{ 
    srand((double)microtime() * 1000000); 
    return rand(1, $max); 
} 
?> 

回答

1

do_the_query執行對在$db參數MySQL數據庫連接資源的$query參數給它的SQL查詢。如果有錯誤,它將顯示查詢和相關的錯誤信息。

random將返回1和傳遞到$max的值之間的僞隨機數。

(如果這一點不明確,這兩個功能都沒有任何關係。)

+0

先生,非常感謝你。 – 2010-11-10 06:56:23

+0

不客氣。 – cdhowie 2010-11-10 08:30:27

1

第一個函數(do_the_query())對於那些似乎需要數據庫句柄,並做了一個功能一個令人震驚的名字查詢,如果失敗,向黑客顯示有用的信息。

如果你想知道的是or是如何工作的,它的作品,因爲它利用了短路的評價。想想左手邊。如果查詢返回truthy,則滿足OR並且可以跳過右側。如果它返回falsy,那麼PHP需要檢查右邊,在我們的例子中,這是print()

第二個函數(random())返回1與參數$max之間的psuedo-random number。它隨機播放當前microtime()強制浮動,然後乘以1000000

我不會說這兩個函數是PHP代碼很好的例子。查詢一應該被命名爲一個db類或類似的。它也不應該回應查詢和錯誤信息(除非在嚴格的開發環境中)。它也許應該記錄這些信息,並且網站應該儘可能優雅地恢復。

random()功能也相當靈活。它也使用srand(),當它不需要PHP 4.2之後(它現在自動完成)。

+0

非常感謝你,先生。 – 2010-11-10 06:55:55

1

我猜多數民衆贊成混淆你的路線是:

$result = mysql_db_query($db, $query) or print("$query<BR>" . "<B>" . mysql_errno() . ": " . mysql_error() . "</B><BR>\r\n<BR>\r\n"); 

見,PHP使用它的邏輯運算符的short-circuit evaluation這對於一個or表示表達式的右側(打印錯誤消息)只有在左側返回false時纔會被評估。

+0

謝謝你,先生,但我也想知道第二個功能 – 2010-11-10 06:43:33

0

第一函數執行MySQL查詢像 「SELECT * FROM表」 ...返回結果:

function do_the_query($db, $query) 
    { 
     $result = mysql_db_query($db, $query) or print("$query<BR>" . "<B>" . mysql_errno() . ": " . mysql_error() . "</B><BR>\r\n<BR>\r\n"); 
     return $result; 
    } 

二函數生成基於microtime中內部功能和返回結果的隨機數:

function random($max) 
{ 
    srand((double)microtime() * 1000000); 
    return rand(1, $max); 
}