2017-09-03 9 views
-1

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>"; 

        } 
       } 
      } 
+1

'$ query2result'は__array__です。どのようにして1を上回ることができますか?あなたはここで何を比較しますか? –

+1

プレースホルダ値付きのプリペアドステートメントを使用していますが、それは素晴らしいですが、プレースホルダ*には囲み記号*を付けるべきではないことに注意してください。それらは必要と思われる場合、データベースドライバによって追加されます。 – tadman

答えて

1

あなたがテストしようIDが$query2->fetchの結果セットは連想配列を返します。あなたは、結果セット内のフィールドにアクセスする必要が

...

if($query2result['id'] >= 1){ 

あなただけの行が返されていない場合に言いたい場合は、それがfalseを返します。

if($query2result !== false){ 
+0

これらのソリューションのどちらも私のためには機能しません。 – Cordell

+1

'print_r($ query2result);'を実行して、その内容を確認しましたか? –

関連する問題