MySQL COUNT在PHP中不返回False或True

时间:2015-03-01 14:41:08

标签: php mysql

所以我正在尝试检查用户是否已经喜欢帖子。

代码:

function previously_liked($id) {
    if (isset($_SESSION['user_login'])) {
        $user = $_SESSION["user_login"];
    }
    else {
        $user = "";
    }

    $connection = new mysqli($host, $username, $password, $database);

    $id = $connection->real_escape_string($id);

    $query = $connection->query("SELECT COUNT(`id`) AS `count` FROM `likes` WHERE `id` = '$id' AND `user_id` = '".$connection->escape_string($user)."'");

    while ( $row = $query->fetch_object()->count ) {
            if ( $row->count == 0 ) return false;
            else return true;
}
}

问题是,它不会返回错误或真实。在我的另一个PHP页面上,我试图像这样运行这个函数:

if (previously_liked(70) === true) {
    $aliked = "You've already liked this!";
}

echo $aliked;

我看到的唯一错误是Notice: Undefined variable: aliked in profile.php on line 391

欢迎任何帮助!谢谢!

2 个答案:

答案 0 :(得分:1)

您的查询没问题,您的问题是其他问题:您在if语句的范围内定义$aliked,因此您无法在外部使用它。您需要更改代码,一种可能性是:

if (previously_liked(70) === true) {
    echo "You've already liked this!";
}

或者这个:

$aliked = "";
if (previously_liked(70) === true) {
    $aliked = "You've already liked this!";
}

echo $aliked;

答案 1 :(得分:1)

您可以执行以下操作来查找代码中的错误:

echo $user; //before MySQL query

在替换"。$ connection-> escape_string($ user)后,在MySQL控制台或应用程序(如PHPmyAdmin)中查询MySQL语句。"到你的user_id。如果它获取行而不是MySQL语句是正确的并且$ _SESSION [" user_login"]值有问题。

或者,您也可以回显返回的行以检查输出数据。

否则,请将查询语句检查为列名,表名,数据库等。

希望,它可以帮助你...