[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Соединение с бд
veolancer
Объявляю в начале документа переменные db_host и т.д. и ниже пишу функцию соединиения с БД и в теле потом использую, но php выдаёт мне ошибку что переменные небыли определены, в чём проблема?



Спустя 6 минут, 54 секунды (24.02.2012 - 00:22) killer8080 написал(а):
Цитата (hamado @ 23.02.2012 - 23:16)
в чём проблема?

в области видимости, объяви её глобальной в функции
function connect(){
global $db_host
...

Спустя 8 минут, 19 секунд (24.02.2012 - 00:31) veolancer написал(а):
А если я заместо переменных константы объявлю в самой функции sql, они кстати тоже выдают ошибку, почему? php Говор что они обьявлены blink.gif

Спустя 1 минута, 39 секунд (24.02.2012 - 00:32) veolancer написал(а):
Цитата (hamado @ 23.02.2012 - 21:16)
в области видимости

Точно ж, там глобальная и локальная зона видимости, чёт я позабыл

Спустя 8 минут, 4 секунды (24.02.2012 - 00:40) m4a1fox написал(а):
Глобальные переменные зло dry.gif

Спустя 10 часов, 7 минут, 26 секунд (24.02.2012 - 10:48) veolancer написал(а):
Мне надо данные переенных из вне вставить (из config.php в файл db.php). В конфиге у еня переменные созданы , а в db у меня функция sql, и как быть, как мне дынные то всё таки втавить в функцию?

Спустя 21 минута, 8 секунд (24.02.2012 - 11:09) sergeiss написал(а):
Цитата (hamado @ 24.02.2012 - 11:48)
В конфиге у меня переменные созданы , а в db у меня функция sql, и как быть, как мне даынные то всё таки вставить в функцию?

Так передавай как параметры. И возвращай либо по ссылке, либо как обычная функция возвращает. Либо вообще сделай класс, который будет внутри себя "знать" про все эти подключения, и пусть твоя функция будет частью этого класса.

А вообще - код "не повредит" показать. Потому что иначе можно только гадать на кофейной гуще.

Спустя 15 минут, 23 секунды (24.02.2012 - 11:24) veolancer написал(а):
Свернутый текст
Да у тебя не голова, а дом советов :D

Свернутый текст
Извиняюсь за орфографию, буква 'М' не прописывается и ещё пара клавишь, приходится сильнее жаМкать.


Файл config.php

<?php

#ИМЯ
$db_name = 'baza';

#ХОСТ
$db_host = 'localhost';

#ЛОГИН
$db_login = 'admin';

#ПАРОЛЬ
$db_password = '12345';


Файл db.php

<?php

#ФУНКЦИЯ СОЕДИНЕНИЯ С БАЗОЙ ДАННЫХ
function sql(){
mysql_connect($db_host,$db_login,$db_password) or die("Ошибка соединения с базой данных.");
mysql_select_db($db_name) or die(mysql_error());
mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER SET utf8');
mysql_query('SET COLLATION_CONNECTION="utf8_general_ci"');
}


Стоит на данный момент так(Не работает). Прописываю напрямую, всё ништяк, вношу переменные в самой функции, тоже работает, но мне надо из вне..

Спустя 1 час, 11 минут, 8 секунд (24.02.2012 - 12:36) sergeiss написал(а):
Ну так и в чем проблемы? Только надо еще вернуть состояние, если были ошибки. Выходить из скрипта в такой ситуации я лично считаю "дурным тоном" :)

Оставь config.php как есть, а другой файл переделай

#ФУНКЦИЯ СОЕДИНЕНИЯ С БАЗОЙ ДАННЫХ
function sql(){ $db_host,$db_login,$db_password )
$connect=mysql_connect($db_host,$db_login,$db_password) or return "Ошибка соединения с базой данных.";
mysql_select_db($db_name) or return mysql_error();
mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER SET utf8');
mysql_query('SET COLLATION_CONNECTION="utf8_general_ci"');
return $connect;
}


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

Спустя 1 час, 53 минуты, 27 секунд (24.02.2012 - 14:29) veolancer написал(а):
Там ошибка в примере твоём, ну да ладно, суть понял, но всё ровно ошибку выдаёт Missing argument

Спустя 12 минут, 37 секунд (24.02.2012 - 14:42) sergeiss написал(а):
Ну да. Там надо еще передать $db_name. Но если действительно понял суть, то и сам это всё сделаешь, я думаю smile.gif

И где выдает ошибку про потерянный аргумент? Скорее всего как раз в mysql_select_db()?

Спустя 3 минуты, 47 секунд (24.02.2012 - 14:45) killer8080 написал(а):
sergeiss
Цитата (sergeiss @ 24.02.2012 - 11:36)
function sql(){ $db_host,$db_login,$db_password )

очепятка smile.gif

Спустя 45 минут, 50 секунд (24.02.2012 - 15:31) veolancer написал(а):
Цитата (hamado @ 24.02.2012 - 11:29)
Скорее всего как раз в mysql_select_db()

Да именно там

Спустя 1 минута, 14 секунд (24.02.2012 - 15:32) veolancer написал(а):
<?php

#ФУНКЦИЯ СОЕДИНЕНИЯ С БАЗОЙ ДАННЫХ
function sql($db_host,$db_login,$db_password,$db_name){
mysql_connect($db_host,$db_login,$db_password) or die("Ошибка соединения с базой данных.");
mysql_select_db($db_name) or die(mysql_error());
mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER SET utf8');
mysql_query('SET COLLATION_CONNECTION="utf8_general_ci"');
}

Спустя 1 день, 3 часа, 54 минуты, 34 секунды (25.02.2012 - 19:27) veolancer написал(а):
оп, я забыл всего лишь на всего указать эти параметры при выборе функции таким же образом


sql($db_host,$db_login,$db_password,$db_name);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.