2016-02-17 46 views
0

我有一個表單,其中包含用戶可以向member ids廣告的文本框。每個ID由文本框中的空格分隔。當用戶提交表單時,我想從mysql db中獲取每個成員的email,並在發送電子郵件的php腳本中包含每個電子郵件的字符串。使用pdo使用文本框中的多個ID從mysql數據庫獲取電子郵件

文本框值

101 107 212 

DB Colomns

ID - EMAIL - NAME<br> 
101 - [email protected] - Example 
107 - [email protected] - John Doe 
212 - [email protected] - Frank Ford 

輸出在PHP腳本

mail('Example &lt;[email protected]&gt;' , $subject , $message , $headers); 
mail('John Doe &lt;[email protected]&gt;' , $subject , $message , $headers); 
mail('Frank Ford &lt;[email protected]&gt;' , $subject , $message , $headers); 

我甲肝e尋找一個關於如何將這個寫入我的mail()php腳本的例子,但是沒有找到任何東西。我的第一個任務是獲取相關記錄,然後將它們編寫爲php腳本使用的單個字符串。 FYI - textbox中的ID數量可以從1到6個ID。

任何初學者的提示/例子將不勝感激。

解決我的第一項任務

要提取MySQL的有關記錄數據庫名爲「成員」,我想出了以下內容。我的文本框的名稱是「MemberIDs」。

if(isset($_POST['Submit'])) { 
    $MemberIDs = $_POST['MemberIDs']; 
    $SearchIDs = array($MemberIDs); 
    $SearchStr = implode(' ', $SearchIDs); // returns 101 107 212 
    $pdos = "SELECT * FROM members where id in ({$SearchStr})"; 
    $pdos->execute(); 
    $results = $pdos->fetchAll(); 
} 

我安裝程序之前,測試,看看這是否正常工作,是否這看起來是正確的尋找我希望從中獲取電子郵件的記錄?

+1

向我們展示您的代碼,您從您的結尾嘗試。首先知道如何執行多個文本框。把它放在For循環中。裏面爲循環。執行查詢來查找郵件。 –

+0

@nana我更新了我的問題 –

+0

請在@Cliff上顯示您的HTML代碼

。 –

回答

1

您的SQL IN語句必須使用逗號而不是空格作爲分隔符。

// Assuming this POST variable contains a string 
// looking like "101 107 212". 
$SearchIDs = explode(' ', $_POST['MemberIDs']); 

// You HAVE to sanitize the user input. ALWAYS. 
array_walk($searchIDs, function(&item, $key){ 
    // Make sure every item is a number and not some gibberish. 
    $item = (int) trim($item); 
    if ($item <= 0) { 
     unset($item); 
    } 
}); 

// Make a comma-separated string to use in the IN statement. 
$inIDs = implode(",", $searchIDs); 

// Build the query, at last. 
$pdos = "SELECT * FROM members where id in ({$inIDs})"; 
+0

感謝您的回覆。我會根據你的建議設置一個測試,並返回結果。 –

+0

感謝您的輸入謝爾蓋我感謝您的時間。我最終使用了一個使用mysqli vs pdo的解決方案。 –

+0

不知道在這種特殊情況下會有什麼不同,但很高興知道問題已經解決。 –

相關問題