Ошибка PHP (MySQL): «Предупреждение: mysql_num_rows () ожидает, что параметр 1 будет ресурсом» [duplicate]

0

Возможный дубликат:
mysql_fetch_array() ожидает, что параметр 1 будет ресурсом, boolean задан в select

if (!empty($_POST)){

    $email_to=$_POST['email_to'];
    $email_to=mysql_real_escape_string($_POST['email_to']);

    $sql = "UPDATE `cosmos`.`members` SET `conf` = '2' WHERE `members`.`email` = '$email_to';";
    $result=mysql_query($sql) or trigger_error(mysql_error().$sql);

    $count=mysql_affected_rows($result);                  // line 20
    if($count==1){

    $rows=mysql_fetch_array($result);
    $unique=$rows['u_code'];
    $name=$rows['username'];
    // ---------------- SEND MAIL FORM ---------------- 
    $to=$email_to; 
    $subject="Your Account Password Request! - Cosmos"; 
    $header="from: Tayal's/Cosmos <[email protected]>"; 
    $messages= "Hey $name ,\r\n";
    $messages.="You recently requested a new password";
    $messages.="<br /><a href='confirm.php?uid" . $unique . "'>Confirmation Link</a> \r\n";
    $sentmail = mail($to,$subject,$messages,$header); 
    echo $messages; 
    }   else {
    echo "Not found your email in our database";
    }


}

Предупреждение: mysql_affected_rows() ожидает, что параметр 1 будет ресурсом, boolean задан в C:\wamp\www\a\l\forget.php в строке 20

  • 1
    `` conf` = \ '2 \' `- это проблема. Вся эта строка заключена в двойные кавычки, и вы избегаете одинарных кавычек - в этом нет необходимости. Я полагаю, что MySQL фактически получит символы \ в запросе. Это может привести к ошибке SQL. Удалите \ вокруг 2. Кроме того, является ли поле conf действительно полем varchar, а не int, даже если вы, похоже, храните в нем int?
  • 0
    @Alex JL - обновил это, но все еще получаю ту же ошибку! и conf это int, а не varchar
Показать ещё 1 комментарий
Теги:

3 ответа

1
Лучший ответ
$result=mysql_query($sql);

к

$result=mysql_query($sql) or trigger_error(mysql_error().$sql);

и снова запустите его

а затем

$email_to=$_POST['email_to'];

to

$email_to=mysql_real_escape_string($_POST['email_to']);

о да, и есть также кавычки

  • 0
    Обратите внимание: у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с '\' 2 \ ' members WHERE. email = '[email protected]' 'в строке 1UPDATE cosmos . members SET conf = \ '2 \' WHERE members . email = '[email protected]';
  • 1
    @tunetosuraj, кажется, тебя как-то добавили в ~ 2. это должно быть просто conf = '2'
Показать ещё 10 комментариев
2

$result false, потому что ваш запрос недействителен (имеет синтаксическую ошибку). Использование:

$sql = "UPDATE members SET conf=2 WHERE email = '$email_to';"

(обратите внимание на цитаты, окружающие $email_to)

Также mysql_num_rows() должен использоваться только для запросов SELECT. Для UPDATE, INSERT и DELETE используйте mysql_affected_rows().

Наконец, для справки в будущем, если ваш запрос не работает, напечатайте ошибку и используемый SQL-запрос (что-то вроде ответа Col Shrapnel). Это поможет вам понять, что не так.

  • 0
    эй, часть sql работала но не mysql_affected_rows()
  • 0
    @tune Что не работает?
Показать ещё 9 комментариев
0

Выполненный SQL не был SELECT, поэтому строки не возвращаются!

  • 1
    +1. Вместо этого OP нуждается в mysql_affered_rows .
  • 2
    верный. но это не единственная проблема, это все еще логическое значение, а не ресурс
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню