2011-12-21 2 views
2

Я новичок в PHP и не знаю, как исправить следующую ошибку:SQL ошибка, которую я не могу Фикс

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in E:\webareas\hj942\CW\Website\Login\incorrect.php on line 15

У меня есть таблица пользователей с ролью, которая состоит из normaluser и председателя. Я пытаюсь только выбрать все из таблицы users, где роль 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"); 
} 

?> 

Благодарим за предоставленную помощь.

+0

спасибо, что он работает сейчас –

+0

Пожалуйста, взгляните на мой ответ для некоторых комментариев по некоторым более широким вопросам в вашем коде. – Dancrumb

+0

@Jahed Если он теперь работает, обязательно примите ответ, который наиболее полезен, щелкнув галочку, расположенную рядом с ответом. –

ответ

2

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

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

т.е.: со ссылкой на значение роли. См., Если это работает ...

+0

Это должно сделать это –

+0

спасибо, что работает сейчас –

1

Здесь:

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

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

+1

спасибо, что он работает сейчас –

2

По the docs, mysql_query может возвращать FALSE при возникновении ошибки. Вы должны всегда проверить на это.

По крайней мере,

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

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

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

И, наконец, ваш код широкий открыт для SQL injection attack. I STRONGLY рекомендую вам ознакомиться с ними, понять их и соответствующим образом изменить свой код.

+0

спасибо за ваш совет, я обязательно сделаю :) –

Смежные вопросы