通过Head First PHP&MySQL还是个新手。
我首先安装了EasyHP,并使用$_POST数组成功地获取了php,并很好地回显了html表单输入,但随后mail()函数就不起作用了。做了一些谷歌搜索,发现我需要一个smtp服务器,所以我卸载了EasyHP并安装了XAMPP。我把我的html和php文件放在htdocs文件夹中。html表单有效,但php生成的页面显示php的代码,而不是$_POST数组中的数据。我的sqlINSERT查询也没有成功。
我也试过这本书的在线答案提供的代码——没有乐趣。
我已经确保Apache和MySQL服务器正在运行。我还成功地使用了phpMyAdmin。所以这些模块似乎工作正常——只是我什么都没写。
我还卸载了XAMPP,并按照书中的说明安装了最新的Apache和MySQL服务器——再次没有乐趣。
我已经检查了游荡的文件夹,并在每次卸载和重新安装之间清理了注册表。
我在windows7家庭高级32位。
这是我的html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<h1>Share your story of alien abduction:</h1>
<form method="post" action ="report.php">
<label for="firstname">First name:</label>
<input type="text" id = "firstname" name="firstname" /><br/>
<label for="lastname">Last name:</label>
<input type="text" id = "lastname" name="lastname"/><br/>
<label for"email">What is your email address?</label>
<input type "text" id = "email" name="email"/><br/>
<label for="when">When did it happen?</label>
<input type "text" id="when" name="when"/><br/>
<label for="howlong">How long were you gone?</label>
<input type="text" id="howlong" name="howlong"/><br/>
<label for="howmany">How many did you see?</label>
<input type = "text" id="howmany" name="howmany"/><br/>
<label for="describe">Describe them:</label>
<input type="text" id="describe" name="describe"/><br/>
<label for="whattheydid">What did they do to you?</label>
<input type="text" id="whattheydid" name="whattheydid"/><br/>
<label for="fangspotted">Have you seen my dog Fang?</label>
Yes <input type="radio" id="fangspotted" name="fangspotted" value="yes" />
No <input type="radio" id="fangspotted" name="fangspotted" value="no" /><br />
<img src="fang.jpg" width="100" height="175"><br/>
<label for="other">Any other info then?</label>
<textarea name="other"></textarea><br />
<input type="submit" value="Send the skinny" name="submit" />
</form>
</body>
</html>
这是我的php:
<html>
<head>
<title>Aliens abducted me - Report an abduction</title>
</head>
<body>
<h2>Aliens abducted me - Report an abduction</h2>
<?php
$first_name = $_POST['firstname'];
$last_name = $_POST['lastname'];
$email = $_POST['email'];
$when = $_POST['when'];
$how_long = $_POST['howlong'];
$how_many = $_POST['howmany'];
$describe = $_POST['describe'];
$what_they_did = $_POST['whattheydid'];
$fang_spotted = $_POST['fangspotted'];
$other = $_POST['other'];
$dbc = mysqli_connect('localhost', 'root', '', 'aliendatabase');
$query = "INSERT INTO aliens_abduction (first_name, last_name, when, how_long, " .
"how_many, description, what_they_did, fang_spotted, other, email) " .
"VALUES ('$first_name', '$last_name', '$when', '$how_long', '$how_many', " .
"'$describe', '$what_they_did', '$fang_spotted', '$other', '$email')";
$result = mysqli_query($dbc, $query)
or die ('Its fornicated');
mysql_close($dbc);
echo 'Thanks for submitting the form ' . $first_name . ' ' . $last_name . '.<br />';
echo 'You were abducted ' . $when;
echo ' by ' . $how_many . ' aliens';
echo ' and were gone for ' . $how_long . '<br />';
echo 'You described them like this: ' . $describe . '<br />';
echo 'Was fang there? ' . $fang_spotted . '<br />';
echo 'Your email address is: ' . $email;
?>
</body>
</html>
请注意,我是新来的,不会对如何更好地提问的建议感到冒犯!
提前谢谢。
-
首先,您不需要SMTP服务器来运行PHP
-
第二:如果phpMyAdmin运行良好,而您的PHP脚本不正常,那么很可能是因为您将PHP文件放错了目录,或者apache虚拟主机出现了一些问题。
-
第三,但我认为,考虑到你写的所有代码,检查你的文件扩展名为.php ,你不可能做错了这件事
在数据库调用中添加一些USEFUL错误检查:
$dbc = mysqli_connect('localhost', 'root', '', 'aliendatabase') or die(mysql_error());
$result = mysqli_query($dbc, $query) or die(mysql_error());
仅仅做一个die("it's hosed")
是完全没有用的,尤其是当mysql提供了一个完美的函数来告诉你某个东西被冲洗的确切原因时。