Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

при подключении к БД ошибка mysqli_select_db() expects parameter 1 to be mysqli, string given

Selik Знаток (302), закрыт 4 года назад
Доброго времени суток. подскажите пожалуйста. пытаюсь настроить отзывы на сайте с применением бд, при подключении выдает ошибку.
не выбирается БД.
(Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in C:\OSPanel\domains\localhost\saving memory\POJECT\com\otziv.php on line 5
Не могу выбрать БД)
в php я нуб. помогите разобраться.

есть форма с полями имя емайл текст и чекбокс. обрабатывается это следующим кодом
<?php
include("config.inc.php");
$link_1 = mysqli_connect($DBSERVER, $DBUSER, $DBPASS)
or die("Не могу подключиться" );
mysqli_select_db($DB, $link_1) or die ('Не могу выбрать БД');

if($_POST['add_otziv']) {

$name = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);
$otziv = htmlspecialchars($_POST['otziv']);
$chek = htmlspecialchars($_POST['chek']);

$page = $_SERVER['REQUEST_URI'];
$date = date("d.m.Y - H:i");
if($chek == 'nobot'){
if($name != '' AND $email != '' AND $otziv != ''){
if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email))
{$err = 'Неверно введен е-mail.';}
if(!$err){
//формируем html сообщение
$massege = "
Новый отзыв на сайте!

К странице http://www.ИМЯ_САЙТА.ru".$page.", написали отзыв:



".$name." (".$email.")
".$date."

".$otziv."



";

$headers = "Content-type: text/html; charset=utf-8 \r\n";
$headers .= "From: Мой сайт \r\n";

if(mail("admin@ИМЯ_САЙТА. ru", "Новый отзыв с Вашего сайта", $massege, $headers))
{$err="Спасибо за отзыв".$name;}else{$err='Ошибка в отправлении';}

mysql_query (" INSERT INTO otzivi (name, email, otziv, page, date)
VALUES ('$name', '$email', '$otziv', '$page', '$date')");

}
}else{
$err = 'Вы заполнили не все поля!';
}
}else{
$err='Вы не человек :( ';
}
}
?>
файл config.inc.php содержит следующее
<?php
$DBSERVER = "localhost";
//Пользователь и пароль
$DBUSER = "root";
$DBPASS = "";
//База данных
$DB = "otzivik";
?>
фото с БД в приложении.
Спасибо!
Лучший ответ
Jurijus Zaksas Искусственный Интеллект (420373) 4 года назад
Я, конечно, не эксперт, но по-моему ты перепутал порядок параметров в mysqli_select_db: https://www.w3schools.com/php/func_mysqli_select_db.asp
SelikЗнаток (302) 4 года назад
скорее всего. поменял местами. запрос вроде уходит но в ответ пусто. чистый лист.
Остальные ответы
ewe 2e¶ CoЛнЫшКоcBeTиТоЧеНЬяРкО* Высший разум (306931) 4 года назад
Потому что mysqli_connect — это обертка над mysqli::__construct(), которая НЕ возвращает false в случае какой-нибудь ошибки (например, пароль неправильный или адрес сервера в момент обращения был недоступен по какой-то причине). Поэтому часть or die() не срабатывает, несмотря на ошибку. По этой же причине возвращается не "an object which represents the connection to a MySQL Server.", а какая-то string, если верить вашей ошибке.
Вам надо отдельно проверять, уж не было ли ошибки при подключении к БД, примерно таким образом:
$link_1 = mysqli_connect($DBSERVER, $DBUSER, $DBPASS);
if ($link_1->connect_error) {
die('Connect Error (' . $link_1->connect_errno . ') '
. $link_1->connect_error);
};
ну и дальше ваш алгоритм, что вы там делаете.

Добавлено: кроме того, НИКОГДА не верьте данным, приходящим от пользователя. Всегда прикладывайте регекспы к пользовательским данным, и если они подходят, только после этого записывайте к себе в БД, в файл на сервере и прочее.
SelikЗнаток (302) 4 года назад
Спасибо, буду пробовать.
Похожие вопросы