PHPとPDOを使用するフォローシステムを実装中です。コードは、挿入されたデータに基づいて「フォロー」または「フォロー解除」ボタンが表示されるかどうかを決定します。データベースが正しく更新されていますが、何らかの理由で、演算子が正しく動作していないか、正しく照会されていません。 (わからない)誰でも私が間違っていることを知っている? followon.phpでPHP/PDO問合せ後の演算子以上
:followoff.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);
}
}
:
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'は__array__です。どのようにして1を上回ることができますか?あなたはここで何を比較しますか? –
プレースホルダ値付きのプリペアドステートメントを使用していますが、それは素晴らしいですが、プレースホルダ*には囲み記号*を付けるべきではないことに注意してください。それらは必要と思われる場合、データベースドライバによって追加されます。 – tadman