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

Возможный дубликат:
Предупреждение: mysql_fetch_array (): предоставленный аргумент не является допустимым результатом MySQL

У меня есть эта ошибка:

mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/marlon/domains/webmasterplaats.nl/public_html/edit.php on line 36 

Это код:

  <?php $ip = $_SERVER['REMOTE_ADDR']; $toegang[] = '86.91.195.26'; $toegang[] = '84.86.189.70'; $valid = true; if(in_array($ip, $toegang) || isset($valid)) { if(isset($_GET['id'])) { if($_SERVER['REQUEST_METHOD'] == 'POST') { mysql_query("UPDATE news SET titel='" . mysql_real_escape_string($_POST['titel']) . "', inhoud='" . mysql_real_escape_string($_POST['edit2']) . "' WHERE id='" . mysql_real_escape_string($_GET['id']) . "'"); echo 'Met success geupdate.' ; } $database = mysql_connect('localhost','marlonhe19','123456789asd'); mysql_select_db('wmp', $database); $id = $_GET['id']; $mysql = mysql_query("SELECT * FROM news WHERE id='$id' ;"); while($row = mysql_fetch_assoc($mysql)){ $id = $row['id']; $titel = $row['titel']; $inhoud = $row['inhoud']; echo ' <form id="form1" name="form1" method="post" action=""> <input type="text" name="titel" value="$titel" /><br /> <textarea name="edit2">$inhoud</textarea> <br /> <input type="submit" name="Submit" value="Opslaan" />'; } } } 

В чем проблема?

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

Предупреждение: возможна инъекция SQL. Похоже, ваш запрос не удался.

Замените это:

 $mysql = mysql_query("SELECT * FROM news WHERE id='$id' ;"); 

С:

 $mysql = mysql_query("SELECT * FROM news WHERE id='$id' ;") or die(mysql_error()); 

Вы должны сделать свою собственную функцию обработки ошибок, желательно отобразить сообщение об ошибке, не выходя сразу.

Вам не нужен полуколок ( ; ) в:

 $mysql = mysql_query("SELECT * FROM news WHERE id='$id' ;"); 

Поскольку вы проходите мимо ; , выполнение запроса завершается с ошибкой, а mysql_query возвращает false а не объект. Когда вы передаете false в mysql_fetch_assoc он дает ошибку, которую вы получаете.

Всегда добавляйте проверку ошибок:

 $mysql = mysql_query("SELECT * FROM news WHERE id='$id'") or die(mysql_error()); 

Похоже, ваша часть выбора БД имеет проблему. Добавьте к этому проверку ошибок:

РЕДАКТИРОВАТЬ:

 mysql_select_db('wmp', $database) or die(mysql_error()); 

Вы должны проверить наличие ошибок, например.

 $news_result = mysql_query("SELECT * FROM news WHERE id='$id'") or die("Query failed: ".mysql_error()); 

Кроме того, вы должны назвать переменные результатов запроса чем-то разумным, то есть не $mysql и вы должны использовать переменные связывания для защиты от SQL-инъекции. Рассмотрим строку запроса:

 page.php?id='+OR+'1'='1 

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

 $mysql = mysql_query("SELECT * FROM news WHERE id='$id' ;"); 

в

 $mysql = mysql_query("SELECT * FROM news WHERE id='$id' ;") or die(mysql_error());