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 » Программирование на PHP » Подсчет кол-во строк

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

1. antobra - 14 Декабря, 2010 - 17:22:31 - перейти к сообщению
Сегодня у меня плохой день. Все что не пишу - сталкиваюсь с проблемой. На этот раз проблема в аутентификации((((

Есть код:

PHP:
скопировать код в буфер обмена
  1. $auth = mysql_query("SELECT COUNT(*) FROM table WHERE login='$_POST[login]' AND password='$_POST[password]' ");
  2.  
  3.  if (mysql_num_rows($auth) == 1) { echo "Добро пожаловать в аккаунт"; } else { echo "Ошибка"; }


Код простой, писал его тысячу и один раз! Но не могу понять в чем ошибка, поясню: меняю count(*) на * - скрипт работает, ставлю COUNT(*) и он позволяет входить всем подряд в аккаунт, т.е. выполняется TRUE, даже если ввести "rvjoehnvjnre", т.е. по базе не ищет кол-во найденных строк.

Что такое? Или просто лечь поспать))))
2. Uchkuma - 14 Декабря, 2010 - 17:27:32 - перейти к сообщению
Вы пытаетесь посчитать количество количества ))
3. DeepVarvar - 14 Декабря, 2010 - 17:28:12 - перейти к сообщению
Лечь поспать... Мне помогает Радость
PHP:
скопировать код в буфер обмена
  1. mysql_query('SELECT COUNT(*) FROM `table` WHERE `login`= "'.$_POST['login'].'" AND `password` = "'.$_POST['password'].'"');

(Добавление)
Uchkuma пишет:
посчитать количество количества

Пусть даже и так Улыбка
4. Uchkuma - 14 Декабря, 2010 - 17:32:41 - перейти к сообщению
mysql_num_rows никогда не вернет 0 при таком запросе. Надо сравнивать
если на то пошло. Не забыв перед этим вернуть ряд результата запроса.
5. antobra - 14 Декабря, 2010 - 17:38:31 - перейти к сообщению
Uchkuma пишет:
mysql_num_rows никогда не вернет 0 при таком запросе. Надо сравнивать
если на то пошло. Не забыв перед этим вернуть ряд результата запроса.


Сейчас доделаю это и лягу спать.

Так, т.е. скрипт должен выглядеть так? :

PHP:
скопировать код в буфер обмена
  1. $auth = mysql_query("SELECT COUNT(*) FROM table WHERE login='$_POST[login]' AND password='$_POST[password]' ");
  2.  
  3. if ($auth['COUNT(*)']) {
  4. bla-bla
  5. }
  6.  

(Добавление)
или так:

$res2=mysql_query("SELECT COUNT(*) FROM base WHERE type='F'");
while ($row2=mysql_fetch_array($res2)){
echo $row2["COUNT(*)"];
}
6. CenapaTop - 14 Декабря, 2010 - 17:56:40 - перейти к сообщению
SELECT COUNT(*) FROM ...
всегда возвратит 1 строку
7. OrmaJever - 14 Декабря, 2010 - 20:16:46 - перейти к сообщению
antobra пишет:
PHP:
скопировать код в буфер обмена
  1. $auth = mysql_query("SELECT COUNT(*) FROM table WHERE login='$_POST[login]' AND password='$_POST[password]' ");
  2.  
  3. if ($auth['COUNT(*)']) {
  4. bla-bla
  5. }

я извиняюсь но это просто ржач))

PHP:
скопировать код в буфер обмена
  1. $auth = mysql_query("SELECT * FROM table WHERE login='$_POST[login]' AND password='$_POST[password]' ");
  2. if(mysql_num_rows($auth) == 1) echo 'успешно';
8. Uchkuma - 14 Декабря, 2010 - 21:34:20 - перейти к сообщению
Нет смысла делать COUNT(*), если в последствии требуется выборка и других данных из этой же строки. Если авторизация прошла успешно вы будете делать второй запрос?
Для подсчета COUNT(*) будет быстрее, чем mysql_num_rows, только в том случае, если выборка идет безо всяких условий, если вы хотели это сделать для скорости.
9. JustUserR - 15 Декабря, 2010 - 12:33:57 - перейти к сообщению
antobra Достижение оптимального варината решния приведнной вами задачи анализа корректности авторизации пользователя на основе переданых им информационных полей - зависит от используемых впоследствии действий по обращению к серверу БД - в частности если указанный PHP-скрипт осуществляет исключительную проверку сущестования предоставленных элементов имени ползоватея и пароля - то вариант решения с использвание агренационной функции является более оптимальным - однако в качестве допустимого дополления целесообразно обеспечит представение имени стлобца выборки в виде alias-имени

 

Powered by ExBB FM 1.0 RC1