Возможный дубликат:
Ошибка PHP: mysql_fetch_array () ожидает, что параметр 1 будет ресурсом, boolean
Кажется, я не могу понять, что я делаю неправильно. Поэтому, когда я отправляю свою форму, я получаю предупреждение и
Примечание. Неопределенная переменная: имя dbus в /Library/WebServer/Documents/ArturoLuna_Final/loginCheck.php в строке 30
$username = $_POST['username']; $password = $_POST['password']; if($username&&$password) { require 'conn.php'; $query = "SELECT * FROM users WHERE username='$username'"; $result = $mysql->query($query) or die(mysqli_error($mysql)); $numrows = $result->num_rows; if ($numrows!=0) { while($row = mysql_fetch_assoc($result)) { $dbusername = $row['username']; $dbpassword = $row['password']; } //check to see if they match! if($username==$dbusername&&$password==$dbpassword) { echo "youre In!"; } else echo "incorrect password!"; } else die("that user is dead"); //echo $numrows; } else echo ("Please Enter Username")
что я могу делать неправильно?
+ Изменить
while($row = mysql_fetch_assoc($result))
в
while($row = $result->fetch_assoc())
Вы пропустили i
от имени функции и перепутали OO и код процедурного стиля, поэтому вы смешиваете mysql_*
результата mysql_*
и объекты mysqli_result
.
Вы смешиваете традиционные PHP MySQL-функции mysql_*
с интерфейсом MySQLi. В этом случае mysql_fetch_assoc()
ожидает дескриптор ресурса, созданный с помощью mysql_query()
.
Чтобы получить правильный результат, вам необходимо использовать метод MySQLi:
$row = $result->fetch_assoc();
И пока вы на нем, вы можете подумать о том, чтобы сделать код менее восприимчивым к MySQL-инъекции. Правильно избегайте любого введенного пользователем ввода перед его интерполяцией в строку запроса или, еще лучше, используйте средства привязки параметров MySQLi.