【问题标题】:HTML Form/PHP connected but MySQL is empty已连接 HTML 表单/PHP,但 MySQL 为空
【发布时间】: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');

标签: php html mysql forms


【解决方案1】:

您似乎缺少开始表单标记。

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

我建议阅读

http://www.w3schools.com/php/func_mysqli_connect.asp http://www.w3schools.com/php/func_mysqli_real_escape_string.asp

【讨论】:

  • 我有表单开始标签,我在此处粘贴代码时错过了复制它。我很抱歉。另外,我尝试切换参数,但我仍然遇到同样的问题。与数据库的通信在那里,但因为我可以看到我分配给表的自动增量 ID 增加了。但是,我的表中没有添加任何字符串(数据)。
  • 回显查询,例如。回声 $sql;并查看它是否将值正确添加到查询或 print_r($_POST);查看您的值是否正确提交。还要检查您的列类型,确保字符串的列类型为 varchar。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 2013-09-10
  • 2020-03-18
相关资源
最近更新 更多