所以我正在尝试检查用户是否已经喜欢帖子。
代码:
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
欢迎任何帮助!谢谢!
答案 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"]值有问题。
或者,您也可以回显返回的行以检查输出数据。
否则,请将查询语句检查为列名,表名,数据库等。
希望,它可以帮助你...