2016-09-30 41 views
-2

試圖解決這個問題。我試圖恢復一個非常舊的版本的Wordpress,當它被稱爲B2,回到工作狀態。讓一幫編輯的代碼在嘗試後得到它的工作,我現在得到這個:mysqli_select_db()需要2個參數,1個給出

警告:mysqli_select_db()預計2個參數,1給出/家庭/絕密/的public_html/B2-包括在線31

/b2functions.php這裏是一個的有問題的代碼段:

<?php 

/* functions... */ 

function get_currentuserinfo() { // a bit like get_userdata(), on steroids 
    global $HTTP_COOKIE_VARS,$user_login,$userdata,$user_level,$user_ID,$user_nickname,$user_email,$user_url,$user_pass_md5; 
    // *** retrieving user's data from cookies and db - no spoofing 
    $user_login = $HTTP_COOKIE_VARS["cafeloguser"]; 
    $userdata = get_userdatabylogin($user_login); 
    $user_level = $userdata["user_level"]; 
    $user_ID=$userdata["ID"]; 
    $user_nickname=$userdata["user_nickname"]; 
    $user_email=$userdata["user_email"]; 
    $user_url=$userdata["user_url"]; 
    $user_pass_md5=md5($userdata["user_pass"]); 
    $pref_usequicktags=$userdata["pref_usequicktags"]; 
    $pref_postnavigator=$userdata["pref_postnavigator"]; 
    $pref_showinactiveusers=$userdata["pref_showinactiveusers"]; 
    $pref_textarearows=$userdata["pref_textarearows"]; 
    $pref_confirm=$userdata["pref_confirm"]; 
    $pref_usespellchecker=$userdata["pref_usespellchecker"]; 
    // *** /retrieving 
} 


function dbconnect() { 
    global $connexion, $server, $loginsql, $passsql, $base; 

    $connexion = mysqli_connect($server,$loginsql,$passsql) or die("Couldn't connect! So sad :(<p>You should look into this!</p>"); 

    $connexionbase = mysqli_select_db($base) or die("Couldn't connect! So sad :(<p>You should look into this!</p>"); 

    return(($connexion && $connexionbase)); 
} 

我得到的錯誤,當我加載網站在所有。如有必要,我可以提供更多代碼。

+0

你不能只檢查手動輸入這種錯誤?它已經說'mysqli_select_db()需要2個正確的參數,1給出' – Ghost

回答

3

作爲社區維基發佈。我不希望這個代表,也不應該。

$connexionbase = mysqli_select_db($base)

正如錯誤狀態。您需要將數據庫連接作爲第一個參數:

$connexionbase = mysqli_select_db($connexion, $base) 

參考:從手動

例子:

布爾mysqli_select_db(mysqli的$鏈接,字符串$ dbname)

旁註:

return(($connexion && $connexionbase)); 

TBH,我從來沒有見過一回這種類型的語法。據我所知,你只能返回一次或使用數組。

從這個答案拉到https://stackoverflow.com/a/3815243/1415724

你可以只返回一個值。但是,這本身就包含着另外兩個值,你可以使用數組: return array($uid, $sid);

而是通過所有的麻煩去的,只需要使用4個參數:

$connexion = mysqli_connect($server,$loginsql,$passsql, $base) 

按手冊:

然後用返回如果真的需要的話。

return $connexion; 

另外,爲什麼你打算使用MD5來存儲密碼?散列函數不再被認爲是安全的。

你最好用password_hash()

這是21世紀後所有。

$HTTP_COOKIE_VARS,已棄用。

我或你來自哪裏得到它已經不知道爲什麼你正在使用的代碼。

+0

只是爲了添加一個註釋,最有可能的是OP只是測試它的連接,連接的布爾測試和數據庫本身,並在這個答案中涵蓋已經使用帶有4個參數的mysqli_connect'(第四個參數是數據庫名稱) – Ghost

+0

@Ghost真的很難確切說明它的用途,它們也使用了不贊成的'$ HTTP_COOKIE_VARS',正如我在回答中所指出的與其他一些好東西;-) –

+0

@Ghost然而,'返回(($ connexion && $ connexionbase));'似乎不正確,我已經在答案中記下了它。 –

0

您需要將數據庫名稱傳遞到mysqli_select_db()函數中。現在你傳遞的連接不正確,你需要有第二個參數或它不知道該怎麼做。嘗試將其更新爲:

$connexionbase = mysqli_select_db(connexion, $base) ... 
相關問題