Что не так с mysql_num_rows? Возвращает ошибки

Я использовал эту серию, и я до этого видео и mysql_num_rows злил меня с самого начала. http://www.youtube.com/watch?v=HP75yyjHgTg Я легко потратил 5 часов, просто пытаясь исправить все это mysql_num_rows ошибки. В данный момент я делаю страницу профиля и получаю сообщение об ошибке. Ошибка:

Предупреждение: mysql_num_rows() ожидает, что параметр 1 будет ресурсом, значение NULL указано в /home/ztechrel/public_html/TESTING/blarg/REMAKE/profile.php в строке 8 (строка первая - часть mysql_num_rows)

Код в profile.php это:

<?php include("inc/incfiles/header.php"); ?>
<?php
if(isset($_GET['u'])) {
    $username = mysql_real_escape_string($_GET['u']);

    if(ctype_alnum($username))   //check user exists
        $check = mysql_query("SELECT username,first_name FROM users WHERE username='$username'");

    if(mysql_num_rows($check)===1) 
    {
        $get = mysql_fetch_assoc($check);
        $username = $get['username'];
        $firstname = $get['first_name'];
    }
    else
    {
        echo "<h2>User Does Not Exist</h2>";
        exit();
    }
}
?>

Есть ли способ, как я могу это исправить? Или кто-нибудь знает другой способ, которым я могу написать это? Я не удивлюсь, что он использует mysql_num_rows опять же, есть что-то, что я могу использовать вместо этого, что легко реализовать? Если вам нужна другая информация, просто спросите.

4 ответа

Убедитесь, что вы фиксируете ошибки из PHP.

Возможно, предыдущий оператор mysql_query не выполнен и, следовательно, результат не установлен.

Попробуйте ниже, если mysql_query выполняется правильно или обратите внимание

$check = mysql_query("SELECT username,first_name FROM users WHERE username='$username'")  or die(mysql_error()."<br>".$sql);

Используйте это для проверки ошибки в вашем запросе

$username = mysql_real_escape_string($_GET['u']);
if(ctype_alnum($username)) {
    //check user exists
    $check = mysql_query("SELECT username,first_name FROM users 
    WHERE username='$username'") or die(mysql_error());
    if(mysql_num_rows($check)===1){
        $get = mysql_fetch_assoc($check);
        $username = $get['username'];
        $firstname = $get['first_name'];
    }
    else
    {
        echo "<h2>User Does Not Exist</h2>";
        exit();
    }
}

Убедитесь, что переменная $username не пусто., ctype_alnum возвращает ложь. Так $query пустой.

<?php include("inc/incfiles/header.php"); ?>
<?php

    if(isset($_GET['u'])) {
        $username = mysql_real_escape_string($_GET['u']);

        if ($username != "" && if(ctype_alnum($username))) {
            $check = mysql_query("SELECT username,first_name FROM users WHERE username='$username'");

            if(mysql_num_rows($check)===1) 
            {
                $get = mysql_fetch_assoc($check);
                $username = $get['username'];
                $firstname = $get['first_name'];
            }
            else
            {
                echo "<h2>User Does Not Exist</h2>";
                exit();
            }
        }
    }

?>

Это означает, что ваш запрос ничего не возвращает. Поставьте echo для вашего запроса и отобразите его в браузере. Затем скопируйте запрос и запустите его в phpmyadmin или браузере запросов mysql или в другом редакторе mysql. Попробуй найти $username имеет правильное значение или неверное имя поля в запросе.

Другие вопросы по тегам