2016-09-30 114 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) ... 
相关问题