|
|
|
| Делаю так:
session_start();
include "config.php";
mysql_query ("USE users");
$name = $_SESSION ['name'];
$password = $_SESSION ['password'];
echo $name;
$query = mysql_query ("SELECT * FROM register WHERE name = '${name}' ");
$ath = mysql_query ($query);
if (mysql_num_rows ($ath) == 0)
{
exit ("Ошибка базы данных");
}
else
{
echo "<table>";
while (list ($id_user, $name, $email, $date) = mysql_fetch_row ($query))
{
echo "<tr>
<td>${name}</td>
</tr>
<tr>
<td>$email</td>
</tr>";
}
echo "</table>";
|
При помощи этого скрипта хочу найти в базе данных в таблице в столбце name имя пользователя, которое берётся из сессии. В сессию имя пользователя записывается при регистрации. А потом хочу по найденному имени пользователя выводить всю информацию о нём ($email, $date и т.д. много разных данных). Но у меня не получается. Всё время выводится в браузер: "Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in
Ошибка базы данных". | |
|
|
|
|
|
|
|
для: Footer
(16.07.2007 в 20:24)
| | измените строку с запросом так:
$ath = mysql_query ($query) or die("Error in $query : ". mysql_error());
|
| |
|
|
|
|
|
|
|
для: Trianon
(16.07.2007 в 20:31)
| | Пишет: "Error in Resource id #7 : 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 'Resource id #7' at line 1"
У меня id в таблице идёт не попорядку. Идёт что-то типа: 1, 2, 3, 7, 8, 9, и т.д. Просто до этого записи из таблицы удалялись. Не понимаю, почему не работает. | |
|
|
|
|
|
|
|
для: Footer
(16.07.2007 в 21:01)
| | >Пишет: "Error in Resource id #7 : 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 'Resource id #7' at line 1"
Значит в запрос у Вас подставляется не строка с именем, а что-то другое.
echo $name выдает имя нормально?
Между прочим, почему не написать просто
$query = mysql_query ("SELECT * FROM register WHERE name = '$name' ");
|
безо всяких фигурных скобок?
>У меня id в таблице идёт не попорядку.
Ничего страшного. Он и не должен идти по порядку. | |
|
|
|
|
|
|
|
для: Trianon
(16.07.2007 в 21:06)
| | Да, echo $name выдает имя нормально. Попробовал без фигурных скобок сделать запрос, но эффект тотже. Как думаете, в чём дело? Подставил вместо $name имя пользователя, всё равно пишет тоже самое. | |
|
|
|
|
|
|
|
для: Footer
(16.07.2007 в 21:18)
| |
$query = mysql_query ("SELECT * FROM register WHERE name = '${name}' ");
$ath = mysql_query ($query);
|
Явно один из вызовов - лишний. Отсюда и беда. | |
|
|
|
|
|
|
|
для: Trianon
(16.07.2007 в 21:28)
| | Просто я думаю, ничего, что я пользюсь циклом while? Ведь в результате запроса должна быть получена только одна строка. И, если не использовать $ath = mysql_query ($query); , то как же тогда проверить выполнился запрос или нет? Или, в данном случае, можно обойтись без проверки
$ath = mysql_query ($query);
if (mysql_num_rows ($ath) == 0)
{
exit ("Ошибка базы данных");
}
| ? | |
|
|
|
|
|
|
|
для: Footer
(16.07.2007 в 21:36)
| | Trianon говорит, что вы дескриптор, полученный от одной функции mysql_query() передаёте другой функции mysql_query() - это не правильно, функция mysql_query() может принимать только строку-запрос, дескриптор запроса она принимать не может - поэтому один из вызовов mysql_query() лишний. | |
|
|
|
|
|
|
|
для: Footer
(16.07.2007 в 21:36)
| | Отсутствие соответствия запросу записи является ошибочным? Или вы хотите получить ошибку, которую возвращает MySQL-сервер? В любом случае проверку лучше осуществлять с участием функции mysql_error()
<?php
$query = "SELECT * FROM register WHERE name = '${name}' ";
$ath = mysql_query ($query);
if(!$ath) exit("Ошибка базы данных ".mysql_error());
if (mysql_num_rows ($ath) == 0)
{
exit ("В базе данных отсуствуют записи, соответствующие запросу");
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(16.07.2007 в 22:03)
| | Спасибо, всё заработало! Понял ошибку. Исправил. Только вот никак не пойму другого. Не хочет держаться сессия. При авторизации имя пользователя и пароль записываются в сессию. Сначала всё нормально и страница грузится как нужно. То есть отображается информация о пользователе, читаемая из базы данных. Но при обновлении этой страницы, вместо информации о пользователе отображается форма авторизации. Не пойму, почему имя пользователя не сохраняется в сессию.
Тот скрипт, что выводит информацию о пользователе инклюдируется в index.php. В этом файле есть такой код:
<?php
session_start();
$name = $_SESSION ['name'];
$password = $_SESSION ['password'];
if (!$name)
{
include ("form.html");
}
else
{
include ("user_info.php");
}
?>
|
user_info.php, выводящий инофрмацию о пользователе, как раз и приведён выше. Что тут не так? Никак не разберусь. | |
|
|
|
|
|
|
|
для: Footer
(16.07.2007 в 22:35)
| | >user_info.php, выводящий инофрмацию о пользователе, как раз и приведён выше. Что тут не так?
Вы повторно вызываете session_start()? | |
|
|
|
|
|
|
|
для: Trianon
(16.07.2007 в 23:52)
| | Ага. Сейчас попробую исправить. | |
|
|
|
|
|
|
|
для: Footer
(17.07.2007 в 17:19)
| | Всё заработало! Всем спасибо огромное! =) | |
|
|
|