2017-09-03 176 views
-1

我目前正在實現一個使用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>"; 

        } 
       } 
      } 
+1

'$ query2result' is __array__。它如何可以大於1?你在這裏比較什麼? –

+1

您正在使用帶有佔位符值的準備好的語句,這很好,但記住佔位符*不應該有周圍的引號*。如果認爲有必要,那些由數據庫驅動程序添加。 – tadman

回答

1

你想測試帶有ID的結果集$query2->fetch將返回一個關聯數組。

您需要訪問結果集中的領域...

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

如果您只想說如果行沒有得到回報,它將返回false

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

這些解決方案似乎都不適合我。 – Cordell

+1

你做了一個'print_r($ query2result);'看看它包含了什麼。 –