【发布时间】:2017-05-02 19:58:39
【问题描述】:
我正在为我的域设置一个联系表单,我已经成功地从 cPanel 创建了数据库和表,但是我无法让 PHP 代码正常工作。我能够使用 PHP 在 HTML 表单和数据库之间建立连接。当我在表单上点击“提交”时,它会连接到数据库并收到“成功”消息。
但是,当我通过 PHPmyadmin 登录并检查 MySQL 数据库时,我可以看到它确实在表中创建了一个新行,但它是空白的。
我花了几个小时逐行梳理语法,似乎找不到任何不合适的地方,现在我添加了一堆故障排除步骤来尝试解决它。
非常感谢任何帮助!
HTML表单如下:
<form action="insert.php" method="post" name="sentMessage" id="contactForm">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<input type="text" class="form-control" placeholder="Your Name *" name="name" required data-validation-required-message="Please enter your name.">
<p class="help-block text-danger"></p>
</div>
<div class="form-group">
<input type="email" class="form-control" placeholder="Your Email *" name="email" required data-validation-required-message="Please enter your email address.">
<p class="help-block text-danger"></p>
</div>
<div class="form-group">
<input type="tel" class="form-control" placeholder="Your Phone *" name="phone" required data-validation-required-message="Please enter your phone number.">
<p class="help-block text-danger"></p>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<textarea class="form-control" placeholder="Your Message *" name="message" required data-validation-required-message="Please enter a message."></textarea>
<p class="help-block text-danger"></p>
</div>
</div>
<div class="clearfix"></div>
<div class="col-lg-12 text-center">
<div id="success"></div>
<button type="submit" value="submit" class="btn btn-xl">Send Message</button>
</div>
</form>
而将 HTML 表单连接到 MySQL 的 PHP 文件是:
<?PHP
$link = mysqli_connect('localhost', myUserName', 'myPassword', 'myDatabase');
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
$name = mysqli_real_escape_string($_POST['name'], $link);
$email = mysqli_real_escape_string($_POST['email'], $link);
$phone = mysqli_real_escape_string($_POST['phone'], $link);
$message = mysqli_real_escape_string($_POST['message'], $link);
$sql = "INSERT INTO 1stChoice_Contact (name, email, phone, message) VALUES ('$name', '$email', '$phone', '$message')";
if(mysqli_query($link, $sql)){
echo "Your message has been sent!";
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
if(empty($_POST['name']) ||
empty($_POST['email']) ||
empty($_POST['phone']) ||
empty($_POST['message']) ||
!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
{
echo "No arguments Provided!";
return false;
}
$name = strip_tags(htmlspecialchars($_POST['name']));
$email_address = strip_tags(htmlspecialchars($_POST['email']));
$phone = strip_tags(htmlspecialchars($_POST['phone']));
$message = strip_tags(htmlspecialchars($_POST['message']));
$to = 'sample@yourgmail.com';
$email_body = "You have received a new message from your website contact form.\n\n"."Here are the details:\n\nName: $name\n\nEmail: $email_address\n\nPhone: $phone\n\nMessage:\n$message";
$headers = "From: youremail@yourdomain.com\n";
$headers .= "Reply-To: $email_address";
mail($to,$email_subject,$email_body,$headers);
return true;
header('location:index.html');
?>
【问题讨论】:
-
您的代码在几个级别上失败了
-
连接时您没有选择数据库
-
用post方法给表单缺少的开始标签
-
我一直都有 Form 标签。只是在我复制代码粘贴到这里时错过了它。
-
另外,我选择了数据库,出于安全原因,我只是在此处发布时删除了代码。我所拥有的如下:$link = mysqli_connect('localhost', myUserName', 'myPassword', 'myDatabase');