предоставленный аргумент не является допустимым ресурсом результата MySQL

Я разработал небольшую CMS на моей локальной машине WAMP.

Как только я экспортировал свой проект на хостинг, появляется следующая проблема:

Предупреждение: mysql_fetch_assoc (): предоставленный аргумент не является допустимым ресурсом результата MySQL в /homepages/36/d288053636/htdocs/MYWEBSITE/admin/index.php в строке 44

Предупреждение. Невозможно изменить информацию заголовка – уже отправленные заголовки (вывод запущен в /homepages/36/d288053636/htdocs/MYWEBSITE/admin/index.php:44) в / homepages / 36 / d288053636 / htdocs / MYWEBSITE / admin / index. php в строке 62

ЛИНИЯ 44:

$row = mysql_fetch_assoc(mysql_query("SELECT id,usr FROM pureUser WHERE usr='{$_POST['username']}' AND pass='".md5($_POST['password'])."'")); 

Строка 62:

 header("Location: index.php"); 

Что означают эти ошибки?

Solutions Collecting From Web of "предоставленный аргумент не является допустимым ресурсом результата MySQL"

SQL-запрос завершился неправильно. Вы, скорее всего, загрузили скрипт, но либо не загрузили базу данных, либо имели неправильные учетные данные.

Подсказка Вы можете получить очень хорошие и описательные сообщения об ошибках, когда вы поместите следующий код после сбойной инструкции mysql_query:

 if (mysql_error()) { die(mysql_error()); } 

Первая ошибка означает, что вы вызываете mysql_fetch_assoc() на то, что не является ресурсом MySQL. mysql_query возвращает правильный ресурс, поэтому, если вы получаете эту ошибку, это, вероятно, означает, что ваш запрос не удался (что-то, вероятно, неправильно настроено).

Из-за того, как работает HTTP, невозможно отправить HTTP-заголовки (например, заголовок Location) после того, как вы начали писать тело страницы. Когда произошла первая ошибка, он написал сообщение об ошибке в тело, что вызвало еще одну ошибку, когда вы попытались отправить заголовки для перенаправления пользователя. Это должно исчезнуть, если вы исправили свою первую ошибку.

Это означает, что ваш запрос не работает. Это связано с несколькими причинами, включая, возможно, сбой подключения к вашей базе данных или ошибку в вашем SQL-запросе. Вы пробовали отладку, чтобы определить, правильно ли синтаксис запроса?

Ваша проблема в том, что после конкатенации ваш запрос, вероятно, недействителен.

Вы должны зарегистрировать свой запрос после конкатенации, чтобы убедиться, что это так. Вы также должны проверить, что возвращает mysql_query до вызова mysql_fetch_assoc .

С другой стороны:

Это ваш настоящий производственный код? Если это публичный сайт, то это серьезная дыра в безопасности и уязвим для атак SQL-инъекций.

Что делать, если я ввожу ваше имя пользователя:

  1;TRUNCATE pureUser -- 

Ваш запрос станет:

 SELECT id,usr FROM pureUser WHERE usr=1; TRUNCATE pureUser -- AND pass=... 

Итак, вы должны попробовать собственное родное расширение php php:

Фильтрация данных

Кроме того, вы должны попробовать PDO, который является более мощным и надежным для работы с базами данных:

Объекты данных PHP