【问题标题】:how to put the result select of a PDO query in a php variable如何将 PDO 查询的结果选择放入 php 变量中
【发布时间】:2014-07-14 18:20:15
【问题描述】:

在我的项目中,我使用 PDO 连接器来访问我的 mysql 数据库。

$conexao = new PDO($dsn, $user, $pass);

我需要过滤器来获取注册用户表 usuarios 的名称。为此,我启动了 session_start () 并命令他将邮件放入查询中。

我正在做这样的事情:

<?php
session_start();
require_once 'configuracao.php';
$email = $_SESSION['email'];
$sql = "SELECT nome from usuarios where email_usuario ='$email'";
$stmt = $conexao -> prepare($sql);
$stmt -> execute();
$nome = $stmt -> fetch();
echo $nome;
?>

但我不知道哪个方法采用 select 的结果... fetch() 不起作用。

【问题讨论】:

  • 解释 fetch() 不起作用
  • 如果我访问 file.php 回显不会打印任何内容。
  • 仅仅因为您使用的是 PDO,并不意味着您仍然不接受 SQL 注入。使用where email_usuario =:email 然后$stmt-&gt;bindValue(':email', $email);
  • 这是您今天就该主题提出的第三个或第四个问题。您正在浪费大量时间痛苦地选择本应相当简单的任务。找到一个好的教程并阅读参考手册。

标签: php mysql pdo


【解决方案1】:

Fetch() 返回一个数组。

试试:

echo $nome['nome'];

echo $nome[0];

如果未指定,默认情况下,您会调用fetch(PDO::FETCH_BOTH)

来自手册:

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

print("PDO::FETCH_BOTH: ");
print("Return next row as an array indexed by both column name and number\n");
$result = $sth->fetch(PDO::FETCH_BOTH);
print_r($result);
print("\n");

输出:

PDO::FETCH_BOTH: Return next row as an array indexed by both column name and number
Array
(
    [NAME] => banana
    [0] => banana
    [COLOUR] => yellow
    [1] => yellow
)

【讨论】:

  • 不起作用我添加了 bindValue 并使用数组进行了测试,但没有起作用。这里的代码: 准备($sql); $stmt->bindValue(':email', $email); $stmt -> 执行(); $nome = $stmt -> fetch();回声 $nome['nome']; ?>
  • 不出现任何错误并且不打印任何内容。我测试了数据库连接,它工作正常
  • @LucasAraújo 这很难说。代码对我来说看起来不错。我会从至少做这四件事开始:(1) 确认$email 是正确的。 (2) 通过在 PhpMyAdmin 中运行它来确认您的查询是正确的,并且它确实返回了一个结果。 (3) 调用print_r($nome) 而不是echo。 (4) 使用PDO Exceptions获取PDO错误。
猜你喜欢
  • 1970-01-01
  • 2015-12-04
  • 2018-03-08
  • 2016-01-07
  • 2019-03-23
  • 1970-01-01
  • 2017-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多