Консультация № 176272
24.01.2010, 22:55
43.65 руб.
0 4 2
что здесь не так?
мне выдают ошибку

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\zac\www\comment_news.php on line 53
Возникла ошибка -
1


получается я добавляю комментарий с сайта в базу

-----------------

Код:
<?php  include ("blocks/bd.php");

if (isset($_POST['author']))
{
$author = $_POST['author'];
}

if (isset($_POST['text']))
{
$text = $_POST['text'];
}

if (isset($_POST['pr']))
{
$pr = $_POST['pr'];
}

if (isset($_POST['sub_com']))
{
$sub_com = $_POST['sub_com'];
}

if (isset($_POST['id']))
{
$id = $_POST['id'];
}

if (isset($sub_com))
{
if (isset($author)) {trim($author); }
else {$author = "";}

if (isset($text)) {trim($text); }
else {$text = "";}

if (empty($author) or empty($text))
{
exit ("<p>Вы ввели не всю информацию, вернитесь назад и заполните все поля.
<input name='back' type='button' value='Вернуться назад' onclick='javascript:self.back();'>");
}

$author = stripslashes($author);
$text = stripslashes($text);
$author = htmlspecialchars($author);
$text = htmlspecialchars($text);

$result = mysql_query ("SELECT sum FROM captcha",$db);
$myrow = mysql_fetch_array($result);

if ($pr == $myrow["sum"])
{
$date = date("Y-m-d");
$result2 = mysql_query ("INSERT INTO comments_news (id_news,author,text,date) VALUES ('$id','$author','$text','$date')",$db);
$myrow3 = mysql_fetch_array ($result2);

if(!$myrow3)
{
echo "Возникла ошибка - ".mysql_error()."
";
echo $result2;
exit();
}

$address = "djhottabych@gmail.com";
$subject = "Новый комментраий на сайте";
$result3 = mysql_query ("SELECT title FROM news WHERE id='$id'",$db);
$myrow4 = mysql_fetch_array ($result3);
$post_title = $myrow4["title"];
$message = "Появился комментарий к новости - ".$title."\nКомментарий добавил(а): ".$author."\nТекст комментария: ".$text."\nСсылка на новость: http://zac/view_news.php?id=".$id."";
mail($address,$subject,$message,"Content-type:text/plain; Charset=utf-8r\n");

echo "<html><head>
<meta http-equiv='Refresh' content='0; URL=view_news.php?id=$id'>
</head></html>";
exit();


}
else
{
exit ("<p>Вы ввели не верную сумму цифр с картинки на предыдущей странице.
<input name='back' type='button' value='Вернуться назад' onclick='javascript:self.back();'>");
}



}

?>

Обсуждение

Неизвестный
24.01.2010, 23:05
общий
это ответ
Здравствуйте, Hottabych.
Ну еще бы Ваш код работал!
В 52-ой строке Вы выполняете функцию mysql_query, которой передаете запрос "INSERT ...". В 53-ей строке Вы пытаетесь результат выполнения функции mysql_query из строки 52 передать функции mysql_fetch_array в строке 53. В данном случае этого делать нельзя. Этой функции можно передавать результаты выборки, то есть, результаты работы функции mysql_query с запросом "SELECT ...". Поэтому интерпретатор и выкидывает грязное ругательство по поводу того, что передаваемый аргумент не является правильным ресурсом(пардон за мой английский, или вернее перевод с оного).

К сожалению, посоветовать Вам тут ничего не могу, кроме как убрать сию конструкцию, ибо не знаю, что Вы пытались сказать строками 52-53.
С уважением, Товарищ Бородин
3
Неизвестный
24.01.2010, 23:55
общий
этой строкой я пытаюсь добавить в базу комментарий с сайта
Неизвестный
24.01.2010, 23:58
общий
Hottabych:
Комментарий добавляется в строке 52. В строке 53 Вы написали черт-те чего, поэтому Ваш код и не работает.
Неизвестный
25.01.2010, 09:17
общий
это ответ
Здравствуйте, Hottabych.
Замените строки
Код:
$myrow3 = mysql_fetch_array ($result2);

if(!$myrow3)

на
Код:
if($result2==false)

или на
Код:
if(!$result2)

Если хотите проверить был ли INSERT успешным. mysql_query() в случае запроса insert/delete возвращает не объект Resouce, а переменную со значением true/false
5
работает, спасибо
Форма ответа