我目前正在实现一个使用PHP和PDO的跟踪系统。代码根据插入的数据确定是否显示按钮“Follow”或“Unfollow”。数据库正在更新,但出于某种原因,大于或等于运算符无法正常工作,或者我没有正确查询数据库。 (不知道哪个)任何人都知道我在做什么错了?PHP/PDO查询后大于等于运算符
在followon.php:
if($row['userID'] && $row['userName']){
if($row['userID']!=$user_id){
$follow_userid = $row['userID'];
$stmt = $user_follow->runQuery("SELECT id FROM following WHERE user1_id=':user_id' AND user2_id=':follow_userid'");
$stmt->execute(array(":user_id"=>$user_id,":follow_userid"=>$follow_userid));
$follow = $stmt->fetch(PDO::FETCH_ASSOC);
if(!$follow >= 1){
$stmt = $user_follow->runQuery("INSERT INTO following(user1_id, user2_id) VALUES (?, ?)");
$stmt->bindValue(1,$user_id);
$stmt->bindValue(2,$follow_userid);
$stmt->execute();
$stmt = $user_follow->runQuery("UPDATE tbl_users SET following = following + 1 WHERE userID = ?");
$stmt->bindValue(1,$user_id);
$stmt->execute();
$stmt = $user_follow->runQuery("UPDATE tbl_users SET followers = followers + 1 WHERE userID = ?");
$stmt->bindValue(1,$follow_userid);
$stmt->execute();
}
header("Location: index.php?id=".$currentID);
}
}
在followoff.php:
if($row['userID'] && $row['userName']){
if($row['userID']!=$user_id){
$unfollow_userid = $row['userID'];
$stmt = $user_unfollow->runQuery("SELECT id FROM following WHERE user1_id=':user_id' AND user2_id=':unfollow_userid'");
$stmt->execute(array(":user_id"=>$user_id,":unfollow_userid"=>$unfollow_userid));
$follow = $stmt->fetch(PDO::FETCH_ASSOC);
if($follow >= 1){
$stmt = $user_unfollow->runQuery("DELETE FROM following WHERE user1_id= ? AND user2_id= ?");
$stmt->bindValue(1,$user_id);
$stmt->bindValue(2,$unfollow_userid);
$stmt->execute();
$stmt = $user_unfollow->runQuery("UPDATE tbl_users SET following = following - 1 WHERE userID = ?");
$stmt->bindValue(1,$user_id);
$stmt->execute();
$stmt = $user_unfollow->runQuery("UPDATE tbl_users SET followers = followers - 1 WHERE userID = ?");
$stmt->bindValue(1,$unfollow_userid);
$stmt->execute();
}
header("Location: index.php?id=".$currentID);
}
}
而在index.php文件(如果出现按钮):
if($user_id){
if($user_id!=$id){
$query2 = $user_home->runQuery("SELECT id FROM following WHERE user1_id=':user_id' AND user2_id=':id'");
$query2->execute(array(":user_id"=>$user_id,":id"=>$id));
$query2result = $query2->fetch(PDO::FETCH_ASSOC);
if($query2result >= 1){
echo "<a href='followoff.php?id=$currentID' class='btn btn-default btn-xs'>Unfollow</a>";
}
else{
echo "<a href='followon.php?id=$currentID' class='btn btn-info btn-xs'>Follow</a>";
}
}
}
'$ query2result' is __array__。它如何可以大于1?你在这里比较什么? –
您正在使用带有占位符值的准备好的语句,这很好,但记住占位符*不应该有周围的引号*。如果认为有必要,那些由数据库驱动程序添加。 – tadman