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 » PHP » SQL и Архитектура БД » Помогите найти ошибку.

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

1. kusha - 08 Января, 2010 - 12:35:23 - перейти к сообщению
Смысл - проверка пользователя в базе данных.
$login - переданный логин
$password - переданный пароль
таблица устроенна так:

uid | login | pass
-------------------------
1 | example | 12345

mysql_select_db($db);

$res=mysql_query("SELECT uid FROM users WHERE login=".$login." AND pass=".$password);

if(mysql_num_rows($res)>0)
{
echo "Вы совершили вход. Можете приступать к работе с сервисом.<p>";
$user = mysql_result($res, 0, 0);
//Это кук ставиться
setcookie("uid",$user,0x6FFFFFFF);
}
else
{
echo "Неверная связка логин - пароль. Попробуйте снова.<p>";
}

Вот ошибка:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in Z:\home\test1.ru\www\login.php on line 27

На дыру для MySql-Inj глаза закрываю, с этим уже стоит разбираться потом.
Помогите пожалуйста. ::sad24.gif::
2. Ammy - 08 Января, 2010 - 12:41:40 - перейти к сообщению
Если:

Цитата:

таблица устроенна так:

uid | login | password


То почему:
Цитата:

$res=mysql_query("SELECT uid FROM users WHERE login=".$login." AND pass=".$password);
3. kusha - 08 Января, 2010 - 12:43:54 - перейти к сообщению
Просто заминка, описался, в таблице "pass"
4. Ammy - 08 Января, 2010 - 12:53:07 - перейти к сообщению
Это может означать, что MySQL не смог обработать ваш запрос.

PHP:
скопировать код в буфер обмена
  1. $res = mysql_query("SELECT uid FROM users WHERE login=".$login." AND pass=".$password) or die(mysql_error());


Замените строку на эту.
5. kusha - 08 Января, 2010 - 12:59:28 - перейти к сообщению
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 '' at line 1

хм... запрос как-то не так составлен как я понимаю?
попробовал добавить кавычку...

$res = mysql_query("SELECT uid FROM users WHERE login=".$login." AND pass=".$password."\"" ) or die(mysql_error());

ничего не дало.
6. Ammy - 08 Января, 2010 - 13:01:44 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $res = mysql_query("SELECT uid FROM users WHERE login=$login AND pass=$password") or die(mysql_error());
7. kusha - 08 Января, 2010 - 13:04:35 - перейти к сообщению
тоже самое.. ::sad24.gif::

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 '' at line 1
(Добавление)
этот ненавистный селект с двумя условиями. мож заменить на ченить другое? как лучше будет? ::dry.gif::
8. Мелкий - 08 Января, 2010 - 13:20:44 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $res = mysql_query("SELECT `uid` FROM `users` WHERE `login`='".$login."' AND `pass`='".$password."'") or die(mysql_error());

текстовые данные стоит в кавычки брать, а имена полей - в обратные кавычки
9. kusha - 08 Января, 2010 - 13:44:31 - перейти к сообщению
Отлично, этот участочек заработал. Спасибо. Но возникла другая проблема. Не понял

mysql_num_rows($res) равен нулю. даже если в базе есть пользователь. и каким способом считать то, что передано в $res? *не вините, я полный новичок* Огорчение

$user = mysql_result($res, 0, 0); пишет

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 3 in Z:\home\test1.ru\www\login.php on line 36
10. Мелкий - 08 Января, 2010 - 13:59:36 - перейти к сообщению
kusha пишет:
mysql_num_rows($res) равен нулю. даже если в базе есть пользователь.

Значит у пользователя другой пароль или имя, раз с имеющимися логином и паролем ничего не нашли.

1 строка запроса:


kusha пишет:
$login - переданный логин
$password - переданный пароль

А вы их точно получаете? echo $login,$password; выводит их?
11. kusha - 08 Января, 2010 - 14:06:55 - перейти к сообщению
Не мог же я опечататься 6 раз. Не понял
А дело мб в том, что типы разные? у меня в таблице поля pass и login типа varchar(22).


Получаю точно, для проверки вывожу, все верно. Вывожу нам_ровс и он нулю равен.
(Добавление)
ОХ НУ Я ДУРАК!!!! Радость
Я нашел ошибку. Спасибо всем.
Псоледняя ошибка была в том, что паасворд накладывался из-за коннекта к БД. Огромное спасибо, что помогли разобраться Здорово Хи Привет!
12. DimKA - 10 Января, 2010 - 21:32:42 - перейти к сообщению
помогите пожалуйста и мне)

PHP:
скопировать код в буфер обмена
  1.   <?PHP
  2.         if(!$db = mysql_connect("localhost","envos","1111"))
  3.         {
  4.             echo"Не могу подключится к серверу базы данных";
  5.             exit;
  6.         }
  7.         mysql_select_db("guestbook",$db);
  8.         $r = mysql_query("SELECT * from USERS");
  9.         echo"В таблице  ".mysql_num_rows($r)." записей";
  10.  
  11.  ?>


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/dima/Sites/dle/www/index.p hp on line 20
В таблице записей

помогите пожалуйста Однако
13. Ammy - 10 Января, 2010 - 21:46:43 - перейти к сообщению

Это поможет определить истинную ошибку.
14. DimKA - 10 Января, 2010 - 22:06:55 - перейти к сообщению
Ammy,спасибо,ошибка Table 'guestbook.USERS' doesn't exist

ток вроде бы всё правельно,не могу понять в чем причина (
15. Ammy - 10 Января, 2010 - 22:12:06 - перейти к сообщению
DimKA пишет:
ошибка Table 'guestbook.USERS' doesn't exist

Говорится, что таблицы, именуемой как USERS не существует. Вероятно, стоит поменять запрос на такой?


 

Powered by ExBB FM 1.0 RC1