2017-07-07 25 views
0

我有一個很討厭的問題....獲取輸出,但不能在PHP腳本

我給這家代碼用法:我想通過Ajax獲得,只需5個記錄每次我點擊進一步 - 按鈕。我還沒有到目前爲止......

這個腳本只需要從特定用戶得到5條記錄。

問題:

所以SQL查詢運行不會對數據庫的任何問題。但是當我想用PHP腳本來做時,我只從第一個查詢中得到counter(),而第二個查詢從PDO-Statement中給出了一個空數組。

CODE:

if (empty($_SESSION['counter']) || ($_SESSION['counter'] < 0)) { 

     $sql = 'SELECT count(record.record_id) AS counter FROM record 
       LEFT JOIN recordbook ON record.record_id = recordbook.record 
       WHERE user = ?'; 

       $sth = $this->dbc->prepare($sql); 
       $sth->execute(array($u_id['user_id'])); 
       $count = $sth->fetch(); 

       $_SESSION['counter'] = $count['counter']; 
       var_dump($_SESSION); 
      } 
      $_SESSION['counter'] = $_SESSION['counter'] - 5; 

      $sql = 'SELECT record.record_id, status, place, record.record AS records, comment, recorddate 
        FROM record LEFT JOIN recordbook ON record.record_id = recordbook.record 
        WHERE user = ? ORDER BY record.record_id DESC LIMIT ?,5'; 
      $sth = $this->dbc->prepare($sql); 
      $sth->execute(array($u_id['user_id'], 
           $_SESSION['counter'])); 

      $output = $sth->fetchAll(); 
} 

希望有人知道如何解決這個問題?

表結構

Field | Type | Null | Key | Default | Extra 
record_id | int(10) unsigned | NO | PRI NULL | auto_increment 
status | varchar(200) | YES | NULL | 
place | varchar(200) | YES | NULL 
record | longtext | YES NULL 
comment | longtext | YES | NULL 
recorddate | timestamp | YES | CURRENT_TIMESTAMP 
attachment_id | int(10) unsigned | YES | MUL | NULL 
+0

你在哪裏循環取回? –

+0

你爲什麼要做DESC LIMIT?,如果你想5條記錄放下?,你的循環在哪裏? – clearshot66

+0

用'while($ data = $ sth-> fetch()){var_dump($ data);}'替換'$ output = $ sth-> fetchAll();'看看你的數據是否在那裏。 – Dimi

回答

0

OK,大功告成了!沒有錯誤....

需要將變量綁定到查詢。似乎是這樣,只有在準備和執行的時候,它是不夠清楚的。因此,將bindParam(用於整數)或bindValue(用於字符串)代碼添加到代碼中,比它更好,更流暢:)

已經看到,在PHP.net和debugDumpParams()上PDOStatement你可以看到,你的查詢如何與你設置的參數。

這裏的說明書http://php.net/manual/de/pdostatement.debugdumpparams.php