使用变量PHP

时间:2015-12-25 04:00:12

标签: php mysql email

我想在点击按钮时向相应的用户发送电子邮件。电子邮件地址存储在我的数据库中,我将其设置为变量,因此可以在单击按钮时动态发送给正确的用户。我使用了以下代码

$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);
}

这不起作用。
请帮忙!!

1 个答案:

答案 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)。

另外,我已经根据你的问题发表评论,关于你如何使用这个"动态"方法,但未能回复/更新您的问题。

您需要使用WHERE子句,并使用您要查询的表/列。

即:WHERE table.column = '$email'

您目前的代码向SQL injection开放。使用mysqli_* with prepared statementsPDOprepared 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()已经完成了这项工作。