因為MySQL是一個完全分布式的軟體,我們必須考慮到這些可能性:服務不可用、網路堵塞或 者是我們的使用者名稱及口令不匹配。在這些情況下,mysql_connect函數不能返回一個串連標識(因為串連未被建立)。這時,會返回一個邏輯假。這使 得我們可以用一個if語句來處理串連的情況:
$dbcnx = @mysql_connect("localhost", "root", "mypasswd"); if (!$dbcnx) { echo( "Unable to connect to the " . "database server at this time. " ); exit(); } |
在上面的程式碼片段中出現了三個新的東西,首先,我們在mysql_connect函數前加了一個 @符號。包括mysql_connect在內的許多函數會在 失敗後顯示難看的錯誤資訊。在函數名前加一個@符號可以告訴這個函數當執行失敗時,允許我們顯示我們自己友好的出錯資訊。
其次,在我們的if語句的條件中,$dbcnx變數前面加了一個驚歎號。這個驚歎號是PHP中 的“否運算子”。也就是說將邏輯真變為邏輯假,將邏輯假變為 邏輯真。這樣,如果這個串連是失敗的,mysql_connect會返回一個邏輯假,!$dbcnx將等於邏輯真,這樣我們的if語句將被執行。相反,如 果這個串連是成功的,儲存在$dbcnx中的串連標識將等於邏輯真(在PHP中,任何非零的數字都被認為是邏輯真),所以!$dbcnx會等於邏輯 假,if語句將不會被執行。
最後一個是exit函數,這是我們遇到的第一個沒有參數的函數。這個函數的全部作用就是導致PHP停止對本頁的閱讀。如果資料庫連接失敗這是一個很好的響應,因為絕大多數情況下,如果不能串連到資料庫,這一頁不會顯示任何有用的資訊。
和我們在第二章做過的一樣,串連被建立後下一步就是選擇工作的資料庫。我們將要在第二章中所建立的笑話資料庫中工作。這個資料庫被命名為jokes。在PHP中用來選擇資料庫的另外一個函數:
| mysql_select_db("jokes", $dbcnx); |
請注意我們在這兒使用了$dbcnx變數來指出了這個函數所使用的串連標識。這個參數實際上是可省略的。當省略這個參數時,函數會自動使用最後開啟的那一個串連。這個函數成功後返回邏輯真,失敗後返回邏輯假。為了謹慎起見,我們也用了一個if語句來處理錯誤:
if (! @mysql_select_db("jokes") ) { echo( "Unable to locate the joke " . "database at this time. " ); exit(); } |
當建立了串連並選擇了資料庫之後,我們可以開始使用儲存在資料庫中的資料了