HTML表单/PHP已连接,但MySQL为空

HTML表单/PHP已连接,但MySQL为空,php,html,mysql,forms,Php,Html,Mysql,Forms,我正在为我的域设置一个联系人表单。我已经成功地从cPanel创建了数据库和表,但是我在让PHP代码正常工作时遇到了问题。我能够使用PHP在HTML表单和数据库之间建立连接。当我在表单上点击“提交”时,它会连接到数据库,我会收到一条“成功”消息 然而,当我登录并通过PHPmyadmin检查MySQL数据库时,我可以看到它确实在表中创建了一个新行,但它是空的 我花了数小时逐行梳理语法,似乎找不到任何不合适的地方,现在我添加了一系列故障排除步骤来尝试解决它 非常感谢您的帮助 HTML格式如下所示: &

我正在为我的域设置一个联系人表单。我已经成功地从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');

?>

您似乎缺少开场白标签

另外,mysqli_real_escape_string第一个参数是连接,第二个参数是字符串,您没有选择数据库

我建议大家仔细阅读一下


您的代码在几个级别上失败您在连接时没有选择数据库使用方法POST提供表单缺少的开始标记我一直都有表单标记。我只是在复制代码粘贴到这里时错过了它。另外,我选择了DB,出于安全原因,我只是在这里发布时删除了代码。我所拥有的是:$link=mysqli_connect('localhost',myUserName','myPassword','myDatabase');我有表单开始标签,我在这里粘贴代码时没有复制它。我道歉。此外,我尝试切换参数,但仍然存在相同的问题。与数据库的通信在那里,但因为我可以看到分配给表的自动增量ID增加。但是,没有任何字符串(数据)添加到我的表中;并查看是否将值正确添加到查询或打印($\u POST);查看您的值是否正确提交。还要检查列类型,确保字符串的列类型为varchar。