【发布时间】:2014-04-01 07:02:16
【问题描述】:
我正在尝试使用 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'];
}
如果是对的,结果还是一样的。用户名未打印在电子邮件中。 }
【问题讨论】:
-
是的,我正在迁移人。谢谢提醒。
-
我已经编辑了代码。对吗?
-
使用
mysqli更好。您仍然没有运行查询。您需要使用mysqli_query($query),因为mysqli_fetch_array()不接受字符串,它接受mysql_result对象。 -
另外,代码中没有连接MySQLi