【问题标题】:How to retrieve an email from database where $_POST var is like username如何从 $_POST var 类似于用户名的数据库中检索电子邮件
【发布时间】:2018-12-12 02:23:02
【问题描述】:

这里是代码

    <?php 
if(isset($_POST['uuser'])){
       $gemail = mysql_result("SELECT `email` FROM `user` WHERE `username` LIKE '" . ($_POST['uuser']) . "';");

    $to ="$gemail"; // this is user's Email address 

    $from = "admin@mysite.com"; // this is the sender's Email address
    $first_name = $_POST['uuser'];
    $last_name = $_POST['uuser'];
    $subject = "Form submission";

    $message = $first_name . " " . $last_name . " wrote the following:" . "\n\n" . $_POST['message'];

    $headers = "From:" . $from;
    mail($to,$subject,$message,$headers);
    }
?>

问题在于 $gemail 没有从数据库中收到电子邮件。

【问题讨论】:

  • Echo $gemail 你会学到一些非常重要的东西:)
  • 您需要通配符才能使like 工作。您也对 SQL 注入持开放态度,对查询进行参数化。也不应该再使用mysql_ 函数了。
  • 您的 SQL 容易受到 SQL 注入的攻击。你应该解决这个问题。而且您不应该使用mysql_result (已弃用)您的$gemail 将始终为空,因为您没有连接到数据库并且您没有将数据库资源传递给您的mysql_result
  • 也与您的问题无关,但mail( != phpmailer
  • 您的所有输入似乎都具有相同的名称也可能是一个问题。例如电子邮件(用户名)、名字和姓氏。

标签: php sql phpmailer var


【解决方案1】:

您需要使用 mysql_query 或 mysqli_query。所以下面将是你的代码。

$con=mysqli_connect("localhost","my_user","my_password","my_db");
$user = mysqli_real_escape_string($con,$_POST['uuser']);
$gemail = mysqli_query($con,"SELECT `email` FROM `user` WHERE `username` LIKE '".$user."'");

【讨论】:

  • 别忘了%s。
  • 虽然 OP 并没有具体说明他想如何应用“like”,但可以肯定地假设必须在 like 子句中添加一些通配符。
猜你喜欢
  • 2014-07-19
  • 2010-11-28
  • 1970-01-01
  • 1970-01-01
  • 2011-01-06
  • 1970-01-01
  • 1970-01-01
  • 2022-11-19
  • 2012-02-09
相关资源
最近更新 更多