我的代码:
<?php
session_start();
?>
<?php
$username = $_SESSION['username'];
$connect = mysql_connect("localhost", "root","") or die("Couldn't connect!");
mysql_select_db("phplogin")or die("Couldn't find db");
//$id = $_POST['studentList']; <--I'm suppose to pass this from my other page, but for testing purpose I disable this and change it to B1101 below..
$to = mysql_query("SELECT `parentEmail` FROM `parent` WHERE parent.studentID = 'B1101'");
$subject = $_POST['subject'];
$message = $_POST['message'];
$send_contact=mail($to,$subject,$message);
if($send_contact){
echo "E-Mail is sent!";
}
else {
echo "ERROR";
}
?>
<?php
mysql_close();
?>
问题是,它不起作用并发送此错误消息:
Warning: mail() expects parameter 1 to be string, resource given in C:\xampp\htdocs\HTPP\send_contact.php on line 23 ERROR
我尝试使用我的电子邮件对$to
进行硬编码,但它确实有效......现在问题是从数据库中检索电子邮件地址;电子邮件数据类型为varchar(65)
。
答案 0 :(得分:2)
$result = mysql_query("SELECT `parentEmail` FROM `parent` WHERE parent.studentID = 'B1101'");
$row = mysql_fetch_array($result);
$to=return $row[0];
mysql_query返回资源而非string..thats为什么会出现错误..
答案 1 :(得分:1)
在此替换:
$to = mysql_query("SELECT `parentEmail` FROM `parent` WHERE parent.studentID = 'B1101'");
$subject = $_POST['subject'];
$message = $_POST['message'];
$send_contact=mail($to,$subject,$message);
有了这个:
$res = mysql_query("SELECT `parentEmail` FROM `parent` WHERE parent.studentID = 'B1101'");
$to = mysql_result($res,0);
$subject = $_POST['subject'];
$message = $_POST['message'];
$send_contact=mail($to,$subject,$message);
在处理从数据库返回的单数结果时,mysql_result
是您应该调用以从查询中获取数据的函数。
请注意,您收到错误的原因是$to
是一个mysql资源,而不是字符串。
mysql_result
从mysql资源中获取字符串。
答案 2 :(得分:1)
为了清楚它为什么不能像这样工作,mysql_fetch_array
返回一个数组对象,其属性以数据库中的列命名,所以在你的例子中,从这段代码开始:
$result = mysql_query("SELECT `parentEmail` FROM `parent` WHERE parent.studentID = 'B1101'");
$row = mysql_fetch_array($result);
$ row变量将包含此内容(如果您尝试使用print_r显示它):
$row => Array(
[0] => [the address stored in the db],
[parentEmail] => [the address stored in the db]
)
这就是为什么,当Rajat消化时,你需要将$to
变量传递给$row[0]
。
我希望这很有帮助。 祝你有美好的一天。
答案 3 :(得分:0)
这一行
$to = mysql_query("SELECT `parentEmail` FROM `parent` WHERE parent.studentID = 'B1101'");
将为您提供一个mysql资源,如错误所示,而不是字符串。这不是查询的工作方式。
快速查看the manual:你必须打电话给
mysql_fetch_assoc($result)
首先获取信息。
答案 4 :(得分:0)
$to = mysql_query("SELECT `parentEmail` FROM `parent` WHERE parent.studentID = 'B1101'");
因为它不是一个字符串 我想你忘记了获取数据
试试这个:
$email = mysql_fetch_array(mysql_query("SELECT `parentEmail` FROM `parent` WHERE parent.studentID = 'B1101'"));
$to = $email['parentEmail'];
答案 5 :(得分:0)
$to = mysql_query("SELECT `parentEmail` FROM `parent` WHERE parent.studentID = 'B1101'");
$subject = $_POST['subject'];
$message = $_POST['message'];
$send_contact=mail($to,$subject,$message);
在您的代码区域中,请正确检查。您提供资源,您必须使用mysql_fetch_assoc函数来获取您的电子邮件
您无法在没有智能主机的情况下在localhost上发送电子邮件。