mysqli_select_db()需要2个参数,给定

时间:2016-09-30 01:34:34

标签: php mysql wordpress

试图解决这个问题。我试图恢复一个非常旧版本的Wordpress,当它被称为B2时,恢复到工作状态。在对代码进行一系列编辑以尝试使其正常工作之后,我现在得到了这个:

  

警告:mysqli_select_db()需要2个参数,第31行/home/Redacted/public_html/b2-include/b2functions.php中给出的参数为1

以下是有问题的代码段:

<?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));
}

我在加载网站时遇到错误。如有必要,我可以提供更多代码。

2 个答案:

答案 0 :(得分:3)

发布为社区维基。我不想要这样的代表而且不应该。

$connexionbase = mysqli_select_db($base)

正如错误所述。您需要将db连接作为第一个参数传递:

$connexionbase = mysqli_select_db($connexion, $base)

参考:

手册中的示例:

  

bool mysqli_select_db(mysqli $ link,string $ 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,已被弃用。

我不知道你为什么要使用该代码或从哪里获得它。

答案 1 :(得分:0)

您需要将数据库名称传递到mysqli_select_db()函数中。现在你正在不正确地传递连接,你需要有第二个参数,或者它不知道该怎么做。尝试将其更新为:

$connexionbase = mysqli_select_db(connexion, $base) ...