试图解决这个问题。我试图恢复一个非常旧版本的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));
}
我在加载网站时遇到错误。如有必要,我可以提供更多代码。
答案 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) ...