Проблема с подключением БД

ИН
На сайте с 03.10.2013
Offline
150
608

Хотел сделать простой чат, но написав код, столкнулся с проблемой что php не видит базу MySQL.

В браузере пишет no data base. В чем может быть проблема?

index.php

// подключение модулей
include_once 'startup.php';
include_once 'model.php';

// подготовка
startup();

// была отправка формы
if(!empty($_POST)) {

send_message($_POST['name'], $_POST['text2']);
header("location: index.php");
exit();
}

// получаем список сообщений
$messages = get_messages();

?>

<html><body>
<form action="index.php" method="post">
<input type="text" name="name" />
<input type="text" name="text2" />
<input type="submit" value="send" />
</form>
</body></html>

startup.php

function startup() {
// настройки подключения к БД
$hostname = 'localhost';
$username = 'root';
$password = '';
$dbName = 'test';
}

// языковая настройка
setlocale(LC_ALL, 'ru_RU.cp1251');

// подключение к БД
$connect = mysqli_connect($hostname, $username, $password) or die('no connect');
mysqli_query($connect, 'SET_NAMES cp1251');
mysqli_select_db($connect, $dbName) or die('No data base');

// открытие сессии
session_start();

model.php

<?
function get_messages() {

$sql = "SELECT * FROM messages ORDER BY dt DESC";
$result = mysqli_query($sql);

if(!$result)
die(mysqli_error());

$n = mysqli_num_rows($result);
$arr = array();

for($i = 0; $i < $n; $i++) {

$row = mysqli_fetch_assoc($result)
$arr[] = $row;
}
return $arr;
}

function send_message($name, $text2) {

$name = trim($name);
$text = trim($text2);

if($name = "" || $text2 = "")
return;
$dt = date('Y-m-d H:i:s');
$sql = "INSERT INTO messages (dt, name, text2) VALUES ('$dt', '$name', '$text2')";
$result = mysqli_query($sql);

if(!$result)
die(mysqli_error());
}

Если написать простую проверку, то все ок, базу находит.

$host = "localhost";
$user = "root";
$password = "";
$db_name = "test";

$connect = mysqli_connect($host, $user, $password);

mysqli_select_db($connect, $db_name) or die('no data base');

if($connect == true){
echo 'ok';
}
else {
echo 'error';
}

LEOnidUKG
На сайте с 25.11.2006
Offline
1767
#1

Вы применяете синтаксис mysql к mysqli

Там есть отличия.

---------- Добавлено 17.03.2016 в 21:08 ----------

Почитайте как работать с mysqli http://phpclub.ru/detail/article/mysqli

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
ДП
На сайте с 23.11.2009
Offline
203
#2

У вас данные для подключения к БД за пределы функции не выходят:

function startup() {

// настройки подключения к БД
$hostname = 'localhost';
$username = 'root';
$password = '';
$dbName = 'test';
}

т.е. после этого кода переменные будут не определены.

поэтмоу к БД у вас и не коннектиться. Вам или надо внутри функции эти переменные как глоба прописать, или как-то по-другому хранить эти настройки.

ИН
На сайте с 03.10.2013
Offline
150
#3
Дикий пионер:
У вас данные для подключения к БД за пределы функции не выходят:
function startup() {

// настройки подключения к БД
$hostname = 'localhost';
$username = 'root';
$password = '';
$dbName = 'test';
}

т.е. после этого кода переменные будут не определены.
поэтмоу к БД у вас и не коннектиться. Вам или надо внутри функции эти переменные как глоба прописать, или как-то по-другому хранить эти настройки.

Блин, точно! Скобку в конец кода передвинул, теперь php видит бд. Спасибо вам за ответ.

Правда возникла другая проблема, теперь денвер ругается на массив $arr

Parse error: syntax error, unexpected '$arr' (T_VARIABLE) , может кто знает, в чем ошибка?

ДП
На сайте с 23.11.2009
Offline
203
#4

Во-первых, покажите код полностью, лучше сделайте гист - https://gist.github.com/

Во-вторых, рекомендую, если позволяет компьютер - поставьте какую-нибудь IDE типа phpstorm - он вам вот такие ошибки будет еще до запуска скрипта показывать.

А так - скорее всего опять где-то скобку не закрыли или т.п.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий