2017-03-20 49 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表格更加轻松,但方法基本相同。 非常感谢! –