-1

我正在我的 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

4 回答 4

2

您需要执行查询,并且不能像这样引用字段/表名:

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

应该:

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

请注意,反引号仅对 mysql 中的保留字以及带有空格的表和字段名称是必需的。

您也不应该使用已弃用的mysql_*函数,而是使用 PDO 或 mysqli。

于 2012-12-18T17:42:54.490 回答
1

您需要先执行查询,然后才能获取行:

$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,如果您决定朝那个方向前进并在您的 Web 服务器上设置它,这里有一些有用的信息:

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

于 2012-12-18T17:42:10.357 回答
1

您必须执行查询:

$query_run2= mysql_query($query2);
于 2012-12-18T17:42:38.723 回答
0

试试这些:

$query= "SELECT * FROM `email` where `id` =' ".$_SESSION['user_id']. "'" ;
$rs = mysql_query($query);
于 2012-12-18T18:07:50.760 回答