我有一个表单,其中包含一个文本框,用户可以将其member ids
广告。 每个 ID 在文本框中用空格分隔。当用户提交表单时,我想从mysql db获取每个成员的email
,并在发送电子邮件的php脚本中为每封电子邮件包含一个字符串。
文本框值
101 107 212
德铁科隆
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 数量可以从一个到六个 ID 不等。
任何入门提示/示例将不胜感激。
解决我的第一个任务
为了从名为"members"的mysql db中获取适当的记录,我想出了以下内容。我的文本框的名称是"会员ID"。
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();
}
在我设置测试以查看这是否有效之前,这看起来是否正确,以查找我要从中接收电子邮件的记录?
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})";