Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2010, 21:23   #1
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию базы данных, ошибка ведёт к фатальному сбою

Код:
<?php
//Адрес сервера MySQL
$dblocation = "localhost";
//Имя базы данных на хостинге или локальной машине
$dbname = "forum";
//Имя пользователя базы данных
$dbuser = "root";
//и его пароль
$dbpassword = "";

//Устанавливаем соединение с базой данных
$dbcnx = mysql_connect($dblocation, $dbuser, $dbpassword);
if ( ! $dbcnx)
	exit("<P>В настоящий момент сервер базы даннх недоступен, пожэтому корректное отображение страницы невозможно</P>");
else
Print("<P>Connected</P>");
//Выбираем базу данных
if (! mysql_select_db($dbname, $dbcnx))
	exit("<P>В настоящий момент сервер базы даннх недоступен, пожэтому корректное отображение страницы невозможно</P>");
else
	Print("<P>БД выбрана</P>");
/*Устанавливаем кодировку соединения
Следует выбрать ту кодировку, в которой данные будут отправляться MySQL-серверу*/
$result = mysql_query("SELECT * FROM table");
$rows = mysql_num_rows($result);
print($rows);
mysql_close();
?>
вот этот код ведёт к такой ошибке, пр которой прерывается работа сервера.
причём проблема 100% вот тут:
$result = mysql_query("SELECT * FROM table");
$rows = mysql_num_rows($result);
print($rows);
mysql_close();
что не так и как обработать ошибку?
Dimarik вне форума Ответить с цитированием
Старый 13.07.2010, 22:03   #2
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию В ЗАПРОСЕ ОШИБКА БЫЛА

Код:
<?php
//Адрес сервера MySQL
$dblocation = "localhost";
//Имя базы данных на хостинге или локальной машине
$dbname = "forum";
//Имя пользователя базы данных
$dbuser = "root";
//и его пароль
$dbpassword = "";

//Устанавливаем соединение с базой данных
$dbcnx = mysql_connect($dblocation, $dbuser, $dbpassword);
if ( ! $dbcnx)
exit("<P>В настоящий момент сервер базы даннх недоступен, пожэтому корректное отображение страницы невозможно</P>");
else
Print("<P>Connected</P>");
//Выбираем базу данных
if (! mysql_select_db($dbname, $dbcnx))
exit("<P>В настоящий момент сервер базы даннх недоступен, пожэтому корректное отображение страницы невозможно</P>");
else
Print("<P>БД выбрана</P>");
/*Устанавливаем кодировку соединения
Следует выбрать ту кодировку, в которой данные будут отправляться MySQL-серверу*/
$result = mysql_query("SELECT * FROM posts");
die(mysql_error());
$rows = mysql_num_rows($result);
die(mysql_error());
print($rows);
mysql_close();
?>
теперь аварийно не завершает работу, но тем не менее не выдаёт результата. вот это я в Mysql5.1.exe прописал:

mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| data |
| forum |
| mysql |
| wet |
+--------------------+
5 rows in set (0.02 sec)

mysql> USE forum;
Database changed
mysql> SHOW TABLES;
+-----------------+
| Tables_in_forum |
+-----------------+
| authors |
| forums |
| posts |
| tb1 |
| themes |
+-----------------+
5 rows in set (0.11 sec)

mysql> show FORUMS;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'FORUMS' at line 1
mysql> SHOW forums;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'forums' at line 1
mysql> DESCRIBE forums;
+----------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------------+------+-----+---------+----------------+
| id_forum | int(11) | NO | PRI | NULL | auto_increment |
| name | tinytext | YES | | NULL | |
| rule | tinytext | YES | | NULL | |
| logo | tinytext | YES | | NULL | |
| pos | int(11) | YES | | NULL | |
| hide | enum('show','hide') | NO | | show | |
+----------+---------------------+------+-----+---------+----------------+
6 rows in set (0.16 sec)

mysql> INSERT INTO forums VALUES (1, 'NAME1', 'RULE1', 'LOGO1','POS1', 'show');
Query OK, 1 row affected, 1 warning (0.03 sec)

mysql> SELECT * FROM forums;
+----------+-------+-------+-------+------+------+
| id_forum | name | rule | logo | pos | hide |
+----------+-------+-------+-------+------+------+
| 1 | NAME1 | RULE1 | LOGO1 | 0 | show |
+----------+-------+-------+-------+------+------+
1 row in set (0.00 sec)
Dimarik вне форума Ответить с цитированием
Старый 13.07.2010, 22:08   #3
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Комментирую пост №1.
Код полностью рабочий. Скорей всего имя таблицы не table. а по другому. В запросе, надеюсь понятно...

Комментирую пост №2. вместо знака точки с запятой поставьте оператор or. die - прекращает работу сценария.
Внимательнее нужно быть, тогда и ошибок меньше будет вылазить... Не спешите...
Код:
$result = mysql_query("SELECT * FROM posts") or
die(mysql_error());
$rows = mysql_num_rows($result); // здесь or
die(mysql_error()); ИМХО не нужно

Последний раз редактировалось Gorychev; 13.07.2010 в 22:16.
Gorychev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непонятная ошибка при попытке отобразить содержимое таблица базы данных в компоненте DBGrid. hk47 БД в Delphi 6 17.04.2010 08:05
проверка базы данных на корректность веденных данных samouelson БД в Delphi 1 20.12.2009 17:23
EMS InterBase & FireBird Manager 3 ошибка создания Базы данных Gilio БД в Delphi 2 08.05.2009 15:59
Ошибка базы данных AlDelta О форуме и сайтах клуба 3 30.01.2008 08:12