2015-10-18 158 views
-1

我试图添加一个连接两个表的查询,其中'id(s)'等于另一个表,并从那里我想要显示来自两者的信息。 (第一个表为'sign_in',由基本账户凭证组成,第二个表包含用户的个人信息'账户')PDO fetch()返回一行,PDO fetchAll()返回故障排除

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

$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

+0

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

回答

1

您是n不要在您的查询中使用$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);