Ошибка SQL, которую я не могу исправить - PullRequest
2 голосов
/ 21 декабря 2011

Я новичок в php и не знаю, как исправить следующую ошибку:

Предупреждение: mysql_num_rows (): предоставленный аргумент не является допустимым ресурсом результата MySQL в E: \ webareas \ hj942\ CW \ Website \ Login \ invalid.php в строке 15

У меня есть таблица пользователей с ролью, которая состоит из normaluser и председателя.Я пытаюсь выбрать только все из таблицы пользователей, где роль является normaluser.Я получаю сообщение об ошибке выше.Мой PHP-код выглядит следующим образом:

<?php
include("../includes/db.php");

$username=$_POST['username'];
$password=$_POST['password'];

$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);

$sql="SELECT * FROM Users WHERE username='$username' and password='$password' And role = normaluser";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count==1){
session_register("username");
session_register("password");
header("location:myaccount.php");
}

?>

Большое спасибо за любую помощь.

Ответы [ 3 ]

2 голосов
/ 21 декабря 2011

Попробуйте это:

$sql="SELECT * FROM Users WHERE username='$username' and password='$password' And role = 'normaluser'";

Т.е.: цитирование значения роли. Посмотрим, сработает ли это ...

2 голосов
/ 21 декабря 2011

За документы , mysql_query могут возвращать ЛОЖЬ в случае возникновения ошибки. Вы должны всегда проверить это.

Как минимум,

if (!$result) {
    die('Invalid query: ' . mysql_error());
}

даст вам представление о том, что происходит.

При проверке у вас есть role = normaluser в вашем SQL. Это должно вероятно быть role = 'normaluser'.

Наконец, ваш код шириной открыт для атаки SQL-инъекцией . Я СИЛЬНО рекомендую прочитать их, понять их и соответствующим образом изменить свой код.

1 голос
/ 21 декабря 2011

Здесь:

$sql="SELECT * FROM Users 
WHERE username='$username' and password='$password' And role = normaluser";

and role='normaluser' - это должно помочь. Без '' это имя столбца, с ним это строка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...