PDO fetch()返回一行,PDO fetchAll()返回故障排除

时间:2015-10-18 17:42:18

标签: php database pdo fetch account

我正在尝试添加一个连接两个表的查询,其中包含' id(s)'彼此相等,从那里我想显示两者的信息。 (第一个表格是' sign_in'由基本帐户凭据组成,第二个表格包含用户的个人信息

以下示例似乎只显示第一行的信息,但不会再返回任何内容。

$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。

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

示例数据库结构:

enter image description here

enter image description here

运行查询后

enter image description here

1 个答案:

答案 0 :(得分: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);