2016-09-30 2 views
-2

Попытка решить эту проблему. Я пытаюсь восстановить чрезвычайно старую версию Wordpress, когда она была известна как B2, в рабочее состояние. После того, как сделать кучу правок в коде в попытке получить его работу, сейчас я получаю это:mysqli_select_db() ожидает ровно 2 параметра, 1 задано

Предупреждение: mysqli_select_db() ожидает, что именно 2 параметра, 1, приведенные в/Главная/отредактированные/public_html/b2-включать/b2functions.php по линии 31

Вот сегмент кода, который возникли проблемы:

<?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

Публикация на основе сообщества wiki. Я не хочу повторять это, и не должно.

$connexionbase = mysqli_select_db($base)

Подобно тому, как ошибочные состояния. Вам необходимо пройти соединение дб в качестве первого аргумента:

$connexionbase = mysqli_select_db($connexion, $base) 

Ссылка:

Пример из руководства:

BOOL mysqli_select_db (MySQLi $ link, string $ dbname)

Sidenote:

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

ТВН, я никогда не видел этот тип синтаксиса для возвращения. Насколько я знаю, вы можете вернуться только один раз или использовать массив.

Вытащил из этого ответа https://stackoverflow.com/a/3815243/1415724

Вы можете вернуть только одно значение. Но вы можете использовать массив, который сам по себе содержит два других значения: return array($uid, $sid);

Вместо того, чтобы идти через все эти проблемы, просто используйте 4 параметра:

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

согласно инструкции:

затем вернуться с d, если это действительно необходимо.

return $connexion; 

Плюс, почему вы намерены использовать MD5 для хранения паролей? Эта функция хэширования больше не считается безопасной в использовании.

Вам лучше использовать password_hash().

Это 21-го века после того, как все.

и $HTTP_COOKIE_VARS, это устарело.

Я понятия не имею, почему вы используете этот код или где вы получили его от.

+0

, просто чтобы добавить примечание, скорее всего, OP просто тестирует, если его связанный, как логический тест для подключения, так и сам db, и рассмотренный в этом ответе, должен использовали 'mysqli_connect' с 4 аргументами (4-й аргумент был именем базы данных) – Ghost

+0

@Ghost True все же очень сложно сказать, для чего он используется, и они также используют устаревшие' $ HTTP_COOKIE_VARS', как указано в моем ответе вдоль с несколькими другими лакомствами ;-) –

+0

@Ghost Однако это 'return (($ connexion && $ connexionbase));' не кажется правильным, и я сделал заметку об этом в ответе. –

0

Вам необходимо передать имя базы данных в вашу функцию mysqli_select_db(). Прямо сейчас вы неправильно передаете соединение, вам нужно иметь этот второй параметр или он не знает, что делать. Попробуйте обновить его до:

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