【问题标题】:PDO basics, but I really don't understand :-(PDO基础知识,但我真的不明白:-(
【发布时间】:2017-08-12 01:52:56
【问题描述】:

我真的是 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”这个词。

我做错了什么?我确定解决方案很简单,但我没有找到它!

谢谢!

【问题讨论】:

  • 最好回到官方手册和有价值的教程
  • 附注:确保所有错误消息都以一种普遍理解的语言或最接近的语言使用。我显然指的是英语。
  • 要查看$req2 中的内容,请使用var_dump($req2),它会告诉您更多信息。
  • 阅读fetch 的文档,当然它是在呼应Array,因为它包含一个数组!
  • 您好,感谢您的回复。我已经阅读了很多关于使用 PDO(php.net、php-manual.net 等)的页面,但我认为问题出在我对 fetch() 方法检索的结果的概念上。当我要求在两列表中使用 WHERE 获取特殊数据时,我希望从另一列中获取一个字符串。我没有想到使用循环来搜索结果,因为我知道在这个表中,只有一个对应的行。但在其他情况下,可能有几个!

标签: php select pdo execute prepare


【解决方案1】:

让我们看一下documentation for PDO 的 fetch 方法:

从结果集中获取下一行

这意味着 $req2 将不是字符串,而是包含 key->value 对的行,其中键代表行中的列。

这实质上意味着您需要访问行中列的值。

文档中的一个给定示例应该可以帮助您了解如何实现您的目标:

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

在这种情况下,$result 看起来像,例如:

Array
(
    [name] => apple
    [colour] => red
)

自从我使用 PDO 以来已经有一段时间了,但是我在某个时候使用了一个示例来遍历多行以获取每一行的特定列的值,就像这样,如果您需要检查多行,可以帮助您:

...

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

这应该足以让您入门。请记住使用文档和高度评价的教程来帮助您。

【讨论】:

  • 您好,感谢您的详细介绍。我认为问题来自我对 fetch() 方法检索的结果的概念。当我要求在两列表中使用 WHERE 获取特殊数据时,我希望从另一列中获取一个字符串。我没有想到使用循环来搜索结果,因为我知道在这个表中,只有一个对应的行。但在其他情况下,可能有几个!你的解释让我对这个问题有了另一种看法。我对 JSON 表更放心,但方法基本相同。非常感谢!
猜你喜欢
  • 2013-08-20
  • 1970-01-01
  • 1970-01-01
  • 2014-04-16
  • 2018-05-25
  • 2014-11-28
  • 2014-02-14
  • 2023-04-10
  • 1970-01-01
相关资源
最近更新 更多