PHP mail()函数:不能使用数据库中的外部数据

时间:2014-04-01 07:02:17

标签: php database sendmail

我正在尝试使用PHP mail()函数发送电子邮件,当我尝试在电子邮件中调用收件人名称(来自数据库)时遇到问题。 代码在这里:

class User{
   function callname(){
     $user = $_SESSION['id'];
     $query = ("SELECT * FROM user WHERE user.id='$user'"); // trying
     while ($result=mysqli_fetch_array($query)){            // to call
         return($result['username']);}}}                  // "username" in database

$user = new User;

if($_SERVER["REQUEST_METHOD"] == "POST"){
  $username = mysqli_real_escape_string(trim($_POST['username']));
  $check = mysqli_stmt_num_rows(mysqli_query("SELECT * FROM user WHERE username='$username'"));

  if ($check==TRUE){
    $name = $user->callname(); // call the function
    $to = "myemail@domain.com";
    $subject = "Example Subject";
    $headers = "From: My Example Email"."\r\n".
    "MIME-Version: 1.0"."\r\n".
    "Content-Type: text/html; charset=ISO-8859-1"."\r\n".
    'X-Mailer: PHP/' . phpversion();
    $message = "Hai $name, this is the new message.";

    mail($to, $subject, $message, $headers);
} else {
?>
<script type="text/javascript">
    alert("Sorry, username not exist !");
</script>
<?php }}

一切顺利,电子邮件发送成功,标题很好,但消息却没有。 $name不会调用用户名。所以消息只有这样:

Hai , this is the new message.

请帮忙。任何答案都会有所帮助。感谢。


更新 你的意思是这样的吗? (我已改为mysqli

$query = ("SELECT * FROM user WHERE user.id='$user'");
$result = $mysqli->query($query);
while ($row=$resulr->fetch_array()){
   return $row['username'];

   if($$mysqli->num_rows($result) == 0){
      return $row['usern'];
   }

如果正确,结果仍然相同。用户名未在电子邮件中打印。     }

2 个答案:

答案 0 :(得分:3)

mysql_fetch_array()采用mysql_query()返回的对象类型。你需要这样做:

$query = ("SELECT * FROM user WHERE user.id='$user'");
$result = mysql_query($query);
while ($result=mysql_fetch_array($result)){
// ...

您还应该以面向对象的方式使用mysqli,但这是另一篇文章的问题。

答案 1 :(得分:-1)

首先,您不应该使用mysql,因为它已经过折旧尝试使用mysqli,其次您需要从mysql_query

获取结果

代码应该是这个

$query = mysql_query("SELECT * FROM user WHERE user.id='$user'");