我有一个表单,其中包含用户可以广告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 <example@xyz.com>' , $subject , $message , $headers);
mail( 'John Doe <johndoe@abc.com>' , $subject , $message , $headers);
mail( 'Frank Ford <frank@bbjfk.com>' , $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();
}
在我设置测试以确定是否有效之前,这看起来是否正确找到我想从中获取电子邮件的记录?
答案 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})";