2017-08-08 13 views
0

我的代碼創建這樣如何添加一個特定的行到PHP中的數組後,從PDO查詢填充數組後?

$stmt = $pdo->prepare("SELECT uniqueid, firstname, lastname, email, notify FROM information WHERE userid = ? AND notify = 'yes'"); 
    $stmt->execute([$userid]); 
    foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) { 
     //get emails 
     $notifyemailsarray[$row['email']]=$row; 
    } 

該查詢運行後(或可能運行甚至之前)的數組,我想一個特定的數據集添加到該數組,但只有電子郵件,名字和姓氏。所以我試了這...

$specificemail="[email protected]"; 
$specificfirstname="Bob"; 
$specificlastname="Jones"; 

    $notifyemailsarray[$specificemail] = array('firstname' => $specificfirstname, 'lastname' => $specificlastname); 

但是,當我print_r數組之後,我沒有看到我分別添加的「具體」的信息。我確實看到了從PDO查詢中填充的數據,而不是「特定」的內容。我究竟做錯了什麼?

+1

這應該有效,所以最有可能的代碼在這裏我們沒有看到。你能展示完整的代碼嗎?它是以什麼順序出現的?電子郵件「bobjones @ example.com」是否也出現在數據庫中?也許? – Qirel

+2

你在做什麼沒有錯。只有問題是A)電子郵件已經存在,所以你只是覆蓋現有的電子郵件,而不是增加一個。 B)你沒有在數組中包含電子郵件(如果你不需要它,這不是真正的問題,但它是在你創建數組的原始數據中)。或者C)在黑暗中拍攝,但可能是範圍或參考問題。例如在函數內部添加最後一行,但在函數之外構建原始數組。函數內部只有原始數據的副本,所以更改不會影響函數外部。 –

+0

@Jonathan Kuhn這是場景A :(我沒有意識到我添加的「特定」電子郵件已經在數據庫中,並且已經是數組的一部分,我的歉意。但是謝謝你這麼說,並且讓我找到它。 – user3304303

回答

1

你在做什麼都沒有問題。唯一的問題將是:

  • 電子郵件已經存在,所以你只是覆蓋現有的電子郵件,而不是增加一個到最後。
  • 你沒有在數組中包含電子郵件(如果你不需要它,它不是真正的問題,但它是在你正在構建數組的原始數據中)。
  • 在黑暗中拍攝,但可能是範圍或參考問題。例如在函數內部添加最後一行,但在函數之外構建原始數組。函數內部只有原始數據的副本,所以更改不會影響函數外部。
相關問題