mysql没有返回任何Row

时间:2012-12-18 17:40:57

标签: php mysql mysql-num-rows

我在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 个答案:

答案 0 :(得分:2)

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

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

应该是:

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

请注意,只有mysql中的保留字以及带空格的表和字段名称才需要反引号。

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

答案 1 :(得分: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,如果你决定朝着那个方向前进并在你的网络服务器上设置它,这里有一些有用的信息:

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

答案 2 :(得分:1)

您必须执行查询:

$query_run2= mysql_query($query2);

答案 3 :(得分:0)

试试这些:

$query= "SELECT * FROM `email` where `id` =' ".$_SESSION['user_id']. "'" ;
$rs = mysql_query($query);