php
  • mysql
  • pdo
  • 2016-04-14 38 views 0 likes 
    0

    我在index.php文件中直接使用PDO查詢。現在我想創建單獨的文件,我將存儲函數。我創建了一個,但是當我調用函數時只返回「0」。舊版本的作品:PDO不提取任何結果

    $abfrage11 = "SELECT COUNT(e.event_id) as numgoals 
    FROM event e 
    WHERE (e.match_id = '$row1->match_id' AND e.team_id = '$row1->team_a_id' AND e.eventtype IN ('soc_G','soc_PG')) OR 
         (e.match_id = '$row1->match_id' AND e.team_id = '$row1->team_b_id' AND e.eventtype = 'soc_OG')"; 
    $ergebnis11 = $dbh->query($abfrage11); 
    $row11 = $ergebnis11->fetch(PDO::FETCH_OBJ); 
    

    但在新版本中沒有:

    單獨的文件 「storage.php」:

    class StorageAccess 
    { 
        /** @var PDO */ 
        public $db; 
    
        /** 
        * @param $db 
        */ 
        public function __construct($db) 
        { 
         $this->db = $db; 
    
        } 
    public function getAbfrage11() 
        { 
         $query = "SELECT COUNT(e.event_id) as numgoals 
            FROM event e 
            WHERE (e.match_id = :mId AND e.team_id = :tmA AND e.eventtype IN ('soc_G','soc_PG')) OR 
              (e.match_id = :mId2 AND e.team_id = :tmB AND e.eventtype = 'soc_OG')"; 
         $statement = $this->db->prepare($query); 
         $statement->execute([ 
          ':mId' => $row1->match_id, 
          ':mId2' => $row1->match_id, 
          ':tmA' => $row1->team_a_id, 
          ':tmB' => $row1->team_b_id, 
         ]); 
         return $statement->fetchObject(); 
        } 
    } 
    

    呼叫的index.php:

    require_once("dblogin.php"); 
    require_once("Storage.php"); 
    
    $dbFactory = new RepositoriesFactory(); 
    $dbh = $dbFactory->getDataBaseInstance('admgsa_gsa'); 
    $storage_access = new StorageAccess($dbh); 
    
    $row11 = $storage_access->getAbfrage11(); 
    echo "<span class='live-monitor-8' style=\"$goalscbgcolor\">$row11->numgoals</span>"; 
    

    嘗試尋找解決方案,但找不到任何東西。提前感謝您的幫助。

    +1

    不應該將'':mId'=> $ row1-> team_a_id'設爲'':mId'=> $ row1-> match_id'? – Siguza

    +0

    如果我沒有記錯,您不能重複使用相同的佔位符。 –

    +0

    @Siguza是的,它應該是,錯字,但仍然不會返回任何結果。 –

    回答

    -1

    得到了什麼問題。我沒有指定輸入參數:

    public function getAbfrage11($row1) 
        { 
         $query = "SELECT COUNT(e.event_id) as numgoals 
            FROM event e 
            WHERE (e.match_id = :mId AND e.team_id = :tmA AND e.eventtype IN ('soc_G','soc_PG')) OR 
              (e.match_id = :mId2 AND e.team_id = :tmB AND e.eventtype = 'soc_OG')"; 
         $statement = $this->db->prepare($query); 
         $statement->execute([ 
          ':mId' => $row1->match_id, 
          ':mId2' => $row1->match_id, 
          ':tmA' => $row1->team_a_id, 
          ':tmB' => $row1->team_b_id, 
         ]); 
         return $statement->fetchObject(); 
        } 
    

    這解決了我的問題。

    相關問題