2014-02-10 145 views
-1

我只有一個數據庫,它爲什麼要求2個參數?PHP連接數據庫錯誤

警告:mysqli_select_db()期望的是2個參數,1 C中給出:\ XAMPP \ htdocs中\ video_upload \ connect.php第5行

<?php  
    mysqli_connect('localhost', 'root', ''); //connecting to the database  
    mysqli_select_db('video_system'); //chosing a database 
?> 

回答

2

mysqli_select_db功能,當使用程序API要求您傳遞實際連接作爲第一個參數,as shown on the man pages。此連接或鏈接是mysqli_connect返回的內容,因此您不應忽略什麼mysqli_connect returns,而是將其分配給變量。
該功能的簽名清楚地告訴你所有這一切,所以請,RTM。下面的幾個拷貝粘貼發揮:

      \/=============================| 
bool mysqli_select_db (mysqli $link , string $dbname) || 
//returns bool   argument 1  argument 2  || 
mysqli mysqli_connect ([...])        || 
//returns type mysqli accepts vast number of arguments || 
       //           || 
       |======== useful here =======================| 

這意味着你必須寫:

$db = mysqli_connect('localhost', 'root', ''); 
mysqli_select_db($db, 'video_system'); 

如手動& &簽名秀,這mysqli_select_db返回一個布爾值。 true表示數據庫已成功選中,false表示失敗。最好養成檢查函數返回值的習慣。不管它看起來多麼微不足道。所以:

$db = mysqli_connect('localhost', 'root', ''); 
if (!mysqli_select_db($db, 'video_system')) 
{//if return value is false, echo error message and exit script 
    echo 'Failed to select db "video_system": ', mysqli_error($db), PHP_EOL; 
    $db = null;//optional, but generally safer 
    exit(1);//stop execution 
} 
//db selected, get to work here 

但是你可以很容易忽略這第二個函數調用,從關通過選擇的數據庫名稱爲mysqli_connect功能:

$db = mysqli_connect('127.0.0.1', 'root', '', 'video_system'); 

這樣可以節省附加功能的開銷呼叫,這會略微提高性能。我還將localhost字符串更改爲IP地址127.0.0.1,這也可以提供幫助,因爲使用IP意味着該字符串不需要解析爲相應的IP地址。
總而言之,我認爲最好你花一些時間reading the documentation