Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PHP表单发送到MySQL数据库_Php_Mysql - Fatal编程技术网

将PHP表单发送到MySQL数据库

将PHP表单发送到MySQL数据库,php,mysql,Php,Mysql,我是PHP新手,我真的很难将我的PHP联系人表单数据发布到我的数据库MySQL、MAMP、phpMyAdmin中,我不知道为什么我会发现这个问题如此复杂,我已经看了我的代码很多年了,但无法理解它 connection.php <?php $servername = "localhost"; $username = "root"; $password = "root"; $dbname = "FutureDesign"; // Create connection $conn = new my

我是PHP新手,我真的很难将我的PHP联系人表单数据发布到我的数据库MySQL、MAMP、phpMyAdmin中,我不知道为什么我会发现这个问题如此复杂,我已经看了我的代码很多年了,但无法理解它

connection.php

<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "FutureDesign";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
//if ($conn->connect_error) {
//    die("Connection failed: " . $conn->connect_error);
//} 
//echo "Connected successfully";

$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$message = $_POST['message'];

$sql = "INSERT INTO ContactForm (name, phone, email, message ) VALUES ('$name', '$phone', '$email', '$message')";


if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
contact.php

<form name="sentMessage" id="contactForm" method="post" action="connection.php" novalidate>
            <div class="control-group form-group">
              <div class="controls">
                <label>Full Name:</label>
                <input type="text" class="form-control" name="name" id="name" required data-validation-required-message="Please enter your name.">
                <p class="help-block"></p>
              </div>
            </div>
            <div class="control-group form-group">
              <div class="controls">
                <label>Phone Number:</label>
                <input type="tel" class="form-control" name="phone" id="phone" required data-validation-required-message="Please enter your phone number.">
              </div>
            </div>
            <div class="control-group form-group">
              <div class="controls">
                <label>Email Address:</label>
                <input type="email" class="form-control" name="email" id="email" required data-validation-required-message="Please enter your email address.">
              </div>
            </div>
            <div class="control-group form-group">
              <div class="controls">
                <label>Message:</label>
                <textarea rows="10" cols="100" class="form-control" name="message" id="message" required data-validation-required-message="Please enter your message" maxlength="999" style="resize:none"></textarea>
              </div>
            </div>
            <div id="success"></div>
            <!-- For success/fail messages -->
            <button type="submit" value="submit" class="btn btn-primary" id="sendMessageButton">Send Message</button>
          </form>

试着像这样用双引号包装参数

$sql = "INSERT INTO ContactForm (name, phone, email, message ) VALUES (".'$name'.", ".'$phone'.", ".'$email'.", ".'$message'.")";

我建议您将参数与绑定,以避免sql注入

我已从表单的第一行中删除name=sentMessage id=contactForm,并且一切正常

有错误的原始行

<form name="sentMessage" id="contactForm" method="post" action="connection.php" novalidate>
删除编辑行错误

<form method="post" action="connection.php" novalidate>

作为对其他帖子的补充,尝试使用准备好的语句。这比使用mysqli函数更安全。学校是学习的好地方!他们有几篇关于这个问题的文章


祝你好运

警告:使用mysqli时,您应该使用和将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。不要把$POST、$YET或任何用户数据直接放入查询中,如果有人试图利用你的错误,这将是非常有害的。考虑使用A来解决这样的问题。它们为您提供了将代码组织到适当的模型、视图和控制器上下文中所需遵循的模式,并避免了在HTML、PHP、SQL和JavaScript都混杂在一起的情况下出现令人困惑的问题。框架有很多种形式,从非常精简的like到功能非常全面的like,中间有很多点。请确保电话字段不包含非数字字符。我将尝试实现参数化查询和bind_param,将来因为我对php开发还是很陌生,非常感谢您的帮助,我也会考虑在未来使用一个框架谢谢你的帮助,我真的很感谢你的建议,我会尽快对我的数据库进行更改,关于INT,我也一定会研究参数化查询和绑定参数,再次感谢你。你帮了我很大的忙。我尝试过包装参数,但没有成功,谢谢你的建议。PHP字符串允许插值,所以通常切换到这种样式是用不同的语法做完全相同的事情。您在这里所做的是切换到文本“$name”作为插入值,这是一个巨大的倒退$x、 。。。将插入“…$x…”将不会。请非常小心。他们的很多内容已经过时了,可能会引导你养成非常危险的行为和坏习惯。官方PHP文档几乎总是高质量的,并且是最新的。w3schools只是为了点击。PHP的文档旨在提供教育。