我想在点击按钮时向相应的用户发送电子邮件。电子邮件地址存储在我的数据库中,我将其设置为变量,因此可以在单击按钮时动态发送给正确的用户。我使用了以下代码
$mailquery = "SELECT email FROM tbl_users INNER JOIN tbl_bides ON tbl_users.email = tbl_bides.bidder_id";
while ($mailentry = mysql_fetch_array($mailquery)) {
$mail = $mailentry['email'];
$to = $mail;
$subject = "My subject";
$txt = "Right User!";
$headers = "From: webmaster@example.com" . "\r\n" ."CC:somebodyelse@example.com";
mail($to, $subject, $txt, $headers);
}
这不起作用。
请帮忙!!
答案 0 :(得分:2)
您的查询未被执行。
$mailquery = "SELECT email...
它需要包含mysql_query()
。
$mailquery = mysql_query("SELECT email FROM tbl_users INNER JOIN tbl_bides ON tbl_users.email = tbl_bides.bidder_id");
或者,如果您的查询需要连接:
$mailquery = mysql_query("SELECT email FROM tbl_users INNER JOIN tbl_bides ON tbl_users.email = tbl_bides.bidder_id", $connection);
将$connection
替换为您可能用于连接的变量,如果mysql_
开头且未知。
确保使用mysql_
成功连接(尽管您应该转到mysqli_
或PDO)。
不同的MySQL API不会混用,因此请确保使用相同的API进行连接。
另外,我已经根据你的问题发表评论,关于你如何使用这个"动态"方法,但未能回复/更新您的问题。
您需要使用WHERE
子句,并使用您要查询的表/列。
即:WHERE table.column = '$email'
您目前的代码向SQL injection开放。使用mysqli_*
with prepared statements或PDO与prepared statements。
然后咨询:
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。
如果您的查询可能失败,请将or die(mysql_error())
添加到mysql_query()
。
如果您收到有关弃用的通知,那么您将需要使用您应该切换到的mysqli_
或PDO,因为这些mysql_
函数已弃用,将来会被删除PHP 7.0等版本
请记住从连接到查询使用相同的MySQL API。
变化:
mail($to, $subject, $txt, $headers);
to :(并使用条件语句)
if(mail($to, $subject, $txt, $headers)){
echo "Mail was sent and has done its job.";
}
else{
echo "Error, check your logs.";
}
如果您看到Mail was sent and has done its job.
,那么mail()
已经完成了这项工作。