【问题标题】:PDO fetch() returning one row, and PDO fetchAll() returning troubleshootingPDO fetch() 返回一行,PDO fetchAll() 返回故障排除
【发布时间】:2015-10-18 17:42:18
【问题描述】:

我正在尝试添加一个查询来连接两个表,其中它们的“id(s)”彼此相等,并且我想从那里显示来自这两个表的信息。 (第一个表是 'sign_in' 包含基本帐户凭据,第二个表是 'account' 包含用户的个人信息)

下面的例子似乎只显示第一行的信息,但没有进一步返回任何内容。

$id = $_SESSION['user_session'];

$information = $db_connection->prepare(
    "SELECT sign_in.id, sign_in.username, sign_in.email_address, account.id, account.first_name, account.last_name
    FROM sign_in
    INNER JOIN account
    WHERE sign_in.id = account.id"
);

$information->execute(array(
    'id' => $id
));

$userRow = $information->fetch(PDO::FETCH_ASSOC);

使用fetchAll(PDO::FETCH_ASSOC)返回所有行和指定信息;但是,当尝试获取关联的帐户信息(用户名、电子邮件地址等)时,不会返回任何内容。

例如,var_dump($userRow['first_name']); die; 返回 NULL。

非常感谢任何解释或帮助。

示例数据库结构:

运行查询后:

【问题讨论】:

  • 尝试使用 out id 作为参数执行并 var_dump 结果,如果您的查询仍然有相同的 var_dump。

标签: php database pdo fetch account


【解决方案1】:

您没有在查询中使用 $id。在下面的代码中,我使用了常规占位符 ?,因为它们更易于使用。

$id = $_SESSION['user_session'];

$information = $db_connection->prepare(
    "SELECT sign_in.id, sign_in.username, sign_in.email_address, account.id, account.first_name, account.last_name
    FROM sign_in
    INNER JOIN account
    WHERE sign_in.id = ?"
);

$information->execute(array(
    'id' => $id
));

$userRow = $information->fetch(PDO::FETCH_ASSOC);

【讨论】:

    猜你喜欢
    • 2014-01-16
    • 2017-04-17
    • 2014-02-02
    • 2013-04-21
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多