Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Соединение с базой данных с помощью констант
Форумы портала PHP.SU » » Вопросы новичков » Соединение с базой данных с помощью констант

Страниц (2): [1] 2 »
 

1. phphtmlcss - 12 Марта, 2013 - 17:34:01 - перейти к сообщению
Привет!
Ситуация следующая! когда начинал юзать пхп то с базой данных соединялся таким образом, с помощью переменных
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $db_host = 'localhost';
  3. $db_user = 'root';
  4. $db_pass = '';
  5. $db = 'site';
  6.  
  7. $site_url = 'http://site.com/';
  8. mysql_connect($db_host, $db_user, $db_pass) or die("No conected to server!");
  9. mysql_select_db($db) or die("No select DB");
  10. mysql_query("SET NAMES 'utf8'") or die("Can't set charset");
  11.  
  12. ?>

Пришло время продвинутся далее и уже нужно грамотное соединение так как считается хорошим стилем программирования вести соединение с помощью констант
в файле конфига пишу так
PHP:
скопировать код в буфер обмена
  1. define('HOST', 'localhost');
  2. define('USER', 'root');
  3. define('PASS', '');
  4. define('DB', 'connect');


далее обращаюсь к базе через запрос
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. require_once './config.php';
  3.  
  4.  
  5. $dcb = mysql_connect(HOST, USER, PASS, DB) or die("ERROR connected to SERVER");
  6.  
  7. $query = "SELECT * FROM comment";
  8. $result = mysql_query($dcb, $query);
  9. while($row = mysql_fetch_array($result)){
  10. echo $row['comment'];
  11.  
  12. }
  13.  
  14. ?>


ошибки!
CODE (html):
скопировать код в буфер обмена
  1. Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in D:\home\connect.com\www\index.php on line 8
  2.  
  3. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\home\connect.com\www\index.php on line 9
  4. HELLO WORD

Что с этим запросом не так???
2. LIME - 12 Марта, 2013 - 17:38:39 - перейти к сообщению
ты вырезал что-то лишнее из кода...давай как есть
(Добавление)
phphtmlcss пишет:
так как считается хорошим стилем программирования вести соединение с помощью констант
это почему это?
3. phphtmlcss - 12 Марта, 2013 - 17:42:25 - перейти к сообщению
LIME пишет:
ты вырезал что-то лишнее из кода...давай как есть

Файл конфиг
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. define('HOST', 'localhost');
  4. define('USER', 'root');
  5. define('PASS', '');
  6. define('DB', 'connect');
  7.  
  8. mysql_query("SET NAMES 'utf8'") or die("Can't set charset");
  9.  
  10. ?>

index.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. require_once './config.php';
  3.  
  4.  
  5. $dcb = mysql_connect(HOST, USER, PASS, DB) or die("ERROR connected to SERVER");
  6.  
  7. $query = "SELECT * FROM comment";
  8. mysql_query($dcb, $query);
  9. while($row = mysql_fetch_array($result)){
  10. echo $row['comment'];
  11.  
  12. }
  13.  
  14.  
  15. ?>
  16.  
  17.  
  18. <?PHP
  19. echo 'HELLO WORD';
  20. ?>

Все!
4. LIME - 12 Марта, 2013 - 17:45:21 - перейти к сообщению
phphtmlcss пишет:
mysql_query("SET NAMES 'utf8'") or die("Can't set charset");
только после коннекта
и выбора базы
куда дел выбор базы?
phphtmlcss пишет:
mysql_select_db($db) or die("No select DB");
5. phphtmlcss - 12 Марта, 2013 - 17:53:02 - перейти к сообщению
[quote=LIME]
phphtmlcss пишет:
mysql_query("SET NAMES 'utf8'") or die("Can't set charset");
только после коннекта
и выбора базы
куда дел выбор базы?


С 1 аргументом понятно, а со вторым я ни чего не пойму!
я в константе определил базу данных, в запросах вытаскиваю ее зачем мне переменная с именем базы данных?
phphtmlcss пишет:
mysql_select_db($db) or die("No select DB");
6. Мелкий - 12 Марта, 2013 - 17:55:57 - перейти к сообщению
phphtmlcss пишет:
так как считается хорошим стилем программирования вести соединение с помощью констант

Не считается. Зачем держать в глобальной области видимости то, что нужно один единственный раз в одном единственном месте кода?

Хороший вариант - это singleton. И переходите на pdo или mysqli, mysql_* давным давно устарели.
7. LIME - 12 Марта, 2013 - 17:56:28 - перейти к сообщению
а разве mysql_connect позволяет это делать?
mysqli ...
8. phphtmlcss - 12 Марта, 2013 - 18:11:55 - перейти к сообщению
Мелкий пишет:
phphtmlcss пишет:
так как считается хорошим стилем программирования вести соединение с помощью констант

Не считается. Зачем держать в глобальной области видимости то, что нужно один единственный раз в одном единственном месте кода?

Хороший вариант - это singleton. И переходите на pdo или mysqli, mysql_* давным давно устарели.


Все зависит от того что вы пишите ну в смысле какой сайт! Если при использовании одного подключения в фале например конфиг, то запрос фактически остается открыт и это как раз не верное решение!
Так как при наплыве посетителей на сайте более 100 скажем то загнется та страница на которую больше было обращений, не успевания интерпретации браузером приводит к длительны ожидание открытие страницы!
Выход! Соединится с базой и выходить при каждом запросе прочитаете мануал будет вам полезно!
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. require_once './config.php';
  4. $dcb = mysql_connect(HOST, USER, PASS, DB) or die("ERROR connected to SERVER"); // соединение
  5. // запрос
  6. }
  7.  
  8.  
  9. mysql_close($dcb); // выход
  10. ?>
  11.  
9. DelphinPRO - 12 Марта, 2013 - 18:15:45 - перейти к сообщению
phphtmlcss пишет:
Так как при наплыве посетителей на сайте более 100 скажем то загнется та страница

ну-ну Улыбка
phphtmlcss пишет:
прочитаете мануал будет вам полезно!

Вам самому бы не помешало почитать умные книжки...
10. LIME - 12 Марта, 2013 - 18:17:48 - перейти к сообщению
ААААААААа!!!!!!.....такого караула я еще не видел Ха-ха Ха-ха Ха-ха
11. Мелкий - 12 Марта, 2013 - 18:17:52 - перейти к сообщению
Я не ослышался, вы предлагаете на каждый запрос к базе открывать и закрывать коннект?
Простите, я слишком удивлён, чтобы комментировать этот фееричный бред.
12. LIME - 12 Марта, 2013 - 18:18:34 - перейти к сообщению
можно я ему спасибо поставлю))))
13. phphtmlcss - 12 Марта, 2013 - 18:25:30 - перейти к сообщению
LIME пишет:
можно я ему спасибо поставлю))))

Я тебе разрешаю!
А книги, советую, читай!
14. esterio - 12 Марта, 2013 - 18:33:37 - перейти к сообщению
phphtmlcss
Где Вы ето вичитали? неужели у Попова? Я в шокеох*е.
Цитирую офф доку http://php.net/manual/en/functio...ysql-connect.php
Цитата:
resource mysql_connect ([ string $server = ini_get("mysql.default_host") [, string $username = ini_get("mysql.default_user") [, string $password = ini_get("mysql.default_password") [, bool $new_link = false [, int $client_flags = 0 ]]]]] )

Где вы там видите чтоб был аргумент имя базы?
Далее. Вы хотя б в реали видели высоконагруженый проект или ето только пустая теория без практики. Я не имел дело с проектами овер 100 в секунду, но откривать и закривать соединение при каждом запросе бред. Вы еще скажите что постоянное соединение отличное решение. Ах да книжки Вам стоит почитать так как существует еще черга в мускуле где запросы на изменение имеют большый вес нежели на выборку
15. LIME - 12 Марта, 2013 - 18:41:42 - перейти к сообщению
phphtmlcss пишет:
Я тебе разрешаю!
А книги, советую, читай!
все все ...я не могу больше смеяться...остановись
(Добавление)
esterio до такого бреда даже Попов не додумается
phphtmlcss а можно источник Ваших "знаний"? Безумно интересно!

 

Powered by ExBB FM 1.0 RC1