2017-03-20 65 views
-1

我真正的新PDO,我不能得到這個工作。PDO基礎知識,但我真的不明白:-(

我想檢查圖形驗證碼每天,在我的數據庫中,一個表包含兩列:JOUR(= day)和REPONSE(= answer)。用戶輸入一個代碼存儲在$ code_entre中,這個代碼必須與輸入一個

使用date()方法,我得到了一天的數字,我將它存儲在$ numero_jour中,我的代碼應該獲取當天的代碼並將其與輸入的代碼進行比較。

  $numero_jour = date(j); //Récupère le numéro du jour en cours. 

      $sql2 = $bdd1->prepare('SELECT JOUR FROM questions_securite WHERE REPONSE=:reponse LIMIT 1'); 

      $sql2->bindParam(':reponse', $code_entre, PDO::PARAM_STR);   
      $sql2->execute(); 
      $req2 = $sql2->fetch(); 

      $sql2->closeCursor(); 

      if($req2 != $numero_jour) { 
       return 'Erreur de code de sécurité. Veuillez recommencer.'; 
      } 

...沒有任何反應!我試過「echo $ req2」指令,我得到的全部是「Array」字。

我在做什麼錯?我敢肯定解決方法很簡單,但我找不到它!

感謝

+1

最好回到官方手冊和有價值的教程 –

+0

備註:確保所有錯誤消息都使用通用語言或與其最接近的語言。我顯然是指英語。 – Jonast92

+0

要查看'$ req2'中的內容,請使用'var_dump($ req2)',它告訴你更多。 –

回答

0

讓我們來看看documentation爲PDO的獲取方法:

用於讀取結果的下一行,

這是什麼意思是$ req2將不是一個字符串,而是一行包含鍵 - >值對,其中鍵表示行中的列。

這實際上意味着你需要訪問行內的列的值。

文檔中給出了一個實例可以幫助你瞭解如何實現自己的目標:

$sth = $dbh->prepare("SELECT name, colour FROM fruit"); 
$sth->execute(); 
$result = $sth->fetch(PDO::FETCH_OBJ); 
print $result->name; 

在這種情況下$結果如下,例如:

​​

它已經有一段時間因爲我使用了PDO,但是我在某個點上使用了一個示例來遍歷許多行以獲取每行的某個列的值,就像這樣,以幫助您檢查是否需要多行:

... 

$sth ->execute(); 
$sth ->setFetchMode(PDO::FETCH_ASSOC); 
$currentName = ""; 
while ($row = $sth ->fetch()) 
{ 
    $currentName = $row['name']; 
} 

這應該足以讓你開始。請記住使用文檔和高度評價的教程來幫助你。

+0

你好, 感謝您的詳細。我認爲問題來自我對fetch()方法檢索結果的概念。當我要求使用兩個列表中的WHERE獲取特定數據時,我希望從另一列獲得一個字符串。我不想用循環來搜索結果,因爲我知道在這個表中,只有一個對應的行。但在其他情況下,可能會有幾個! 你的解釋給了我關於這個問題的另一個觀點。我對JSON表格更加輕鬆,但方法基本相同。 非常感謝! –