MySQL не возвращает ни одной строки

Я пишу следующий код в моей программе PHP, но mysql не возвращает ни одной строки. Пожалуйста, проверьте и помогите узнать ошибки в следующем коде.

ОБНОВЛЕННЫЙ КОД

    <?php


    //$query2= "SELECT * FROM `email` where `id` ='".$_SESSION['user_id']. "'" ;

        //$query2= "SELECT * FROM `email` where `id` ='".$_SESSION['user_id']. "'" ;
        $query= "SELECT * FROM `email` where `id` =' ".$_SESSION['user_id']. "'" ;

            $query_run2= mysql_query($query);   
            $query_num_rows= mysql_num_rows($query_run2);

                if ($query_num_rows==0) {
                    echo "Invalid Query";

                }
                    else {

                        $query_result = mysql_result ($query_run2, 0, 'name');

                        echo "Welcome" ;

                        echo $_SESSION['user_id'];
    }

?>

Это дает мне следующий вывод.

Log out Warning: mysql_num_rows() expects parameter 1 to be resource, string given in F:\xampp\htdocs\Email_address\welcome.php on line 20 Invalid Query

Спасибо таха

4 ответа

Решение

Вам нужно выполнить свой запрос, и вы не можете заключить в кавычки имена полей / таблиц:

$query2= "SELECT * FROM 'email' where 'id' ='".$_SESSION['user_id']. "'" ;

должно быть:

$query2= "SELECT * FROM `email` where `id` ='".$_SESSION['user_id']. "'" ;

Обратите внимание, что обратные метки необходимы только для зарезервированных слов в mysql и имен таблиц и полей с пробелами.

Вы также не должны использовать устаревшие mysql_* функции, но PDO или MySQL вместо.

Вы должны выполнить свой запрос:

$query_run2= mysql_query($query2);

Вам нужно выполнить запрос, прежде чем вы сможете получить строки:

$query_run2 = mysql_query($query2);

Вам также нужно подключиться к базе данных, прежде чем вы сможете выполнить запрос:

$con = mysql_connect(DB_SERVERNAME, DB_USERNAME, DB_PASSWORD); 
$dbLink = mysql_select_db(DB_NAME, $con);

$query_run2 = mysql_query($query2, $dbLink);

если вы используете эти функции mysql, а не переключаетесь на PDO, не забудьте потом закрыть соединение с базой данных:

mysql_close($con);

Если это вообще возможно, я настоятельно рекомендую вместо этого перейти на использование PDO, вот некоторая полезная информация, если вы решите пойти в этом направлении и настроить ее на своем веб-сервере:

http://net.tutsplus.com/tutorials/php/php-database-access-are-you-doing-it-correctly/

Попробуйте это:

$query= "SELECT * FROM `email` where `id` =' ".$_SESSION['user_id']. "'" ;
$rs = mysql_query($query);
Другие вопросы по тегам