2015-10-18 159 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);