使用pdo在文本框中使用多个ID从mysql数据库中获取电子邮件

时间:2016-02-17 19:28:29

标签: php mysql email pdo textbox

我有一个表单,其中包含用户可以广告member ids的文本框。每个id由文本框中的空格分隔。当用户提交表单时,我想从mysql数据库中获取每个成员的email,并在发送电子邮件的php脚本中包含每个电子邮件的字符串。

文本框值

101 107 212

DB Colomns

ID - EMAIL - NAME<br>
101 - example@xyz.com - Example
107 - johndoe@abc.com - John Doe
212 - frank@bbjfk.com - Frank Ford

以Php脚本输出

mail( 'Example &lt;example@xyz.com&gt;' , $subject , $message , $headers);
mail( 'John Doe &lt;johndoe@abc.com&gt;' , $subject , $message , $headers);
mail( 'Frank Ford &lt;frank@bbjfk.com&gt;' , $subject , $message , $headers);

我已经找了一个关于如何将它写入我的mail()php脚本但没有找到任何内容的示例。我的第一个任务是获取相关记录,然后将它们写为php脚本使用的单个字符串。仅供参考 - textbox中的ID数量可以是1到6个ID。

非常感谢任何入门提示/示例。

解决我的第一个任务

要从名为“members”的mysql db中获取相应的记录,我想出了以下内容。我的文本框的名称是“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 个答案:

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