【问题标题】:Cannot submit form to database无法将表单提交到数据库
【发布时间】:2017-08-14 09:40:19
【问题描述】:

我正在尝试创建一个简单的表单,使用户能够将数据提交到我的数据库中。但是数据库中没有任何记录。我不知道我的代码有什么问题。我通读了各种问题,但似乎没有得到任何解决方案。我尝试使用不同的方法,但它不起作用。它可以很好地连接到数据库,但是当我提交代码时,数据库中什么也没有出现 这是html

<div id="table">
    <div class="row">
        <div class="col-md-6 col-md-offset-3">
            <form name="register" action="process.php" method="post" role="form">
                <div class="form-group">
                    <input type="text" name="firstName" class="form-control input-text" id="firstName" placeholder="Your First Name" data-rule="minlen:4" data-msg="Please enter at least 4 chars" />
                    <div class="validation"></div>
                </div>
                <div class="form-group">
                    <input type="text" name="lastName" class="form-control input-text" id="lastName" placeholder="Your Last Name" data-rule="minlen:4" data-msg="Please enter at least 4 chars" />
                    <div class="validation"></div>
                </div>
                <div class="form-group">
                    <input type="email" class="form-control input-text" name="email" id="email" placeholder="Your Email" data-rule="email" data-msg="Please enter a valid email" />
                    <div class="validation"></div>
                </div>
                <div class="form-group">
                    <input type="text" class="form-control input-text" name="phone" id="phone" placeholder="Your Phone Number" data-msg="Please enter a valid Number" />
                    <div class="validation"></div>
                </div>
                <div class="form-group">
                  <select required class="form-control" name="gender" id="gender">
                    <option value="" disabled selected>Select Gender</option>
                    <option value="male">Male</option>
                    <option value="femal">Female</option>
                  </select>
                </div>
                <div class="form-group">
                  <select required class="form-control" name="course" id="course">
                    <option value="" disabled selected hidden>Select First Course</option>
                    <option value="excel">Microsoft Excel</option>
                    <option value="web">Web Development</option>
                  </select>
                </div>
                <div class="form-group">
                  <select class="form-control" name="courses" id="courses">
                    <option value="" disabled selected hidden>Select Second Course</option>
                    <option value="micro">Microsoft Excel</option>
                    <option value="deve">Web Development</option>
                  </select>
                </div>
                <div class="form-group">
                    <input type="text" class="form-control input-text" name="occupation" id="occupation" placeholder="Occupation" data-rule="minlen:4" data-msg="Please enter at least 8 chars of subject" />
                    <div class="validation"></div>
                </div>
                <div class="form-group">
                    <textarea class="form-control textarea" rows="3" name="message" id="message" placeholder="What are your expectations for the course" data-rule="minlen:20" data-msg="Please enter at least 20 chars of subject"></textarea>
                    <div class="validation"></div>
                </div>
                <div class="form-group">
                    <span>
                        <input type="checkbox" name="checkbox" aria-label="agree" value="check">
                    </span>
                    <p>By clicking on submit, you have agreed to the <a href="terms.html">terms and conditions</a> the program</p>
                    <div class="validation"></div>
                </div>

                <div class="text-center"><button type="submit" class="input-btn" name="submit" onclick="if(!this.form.checkbox.checked){alert('You must agree to the terms first.');return false}"  />Submit</button></div>
                </div>
            </form>
        </div>
    </div>
</div>

这是php

    <?php
    function Connect() {
    $dbhost = "localhost";
    $dbuser = "root";
    $dbpass = "Kpontsubless12.";
    $dbname = "register";

    $conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname) or die($conn->connect_error);
    return $conn;
}

// create a variable
if (isset($_POST['submit'])) { 
$firstName=$_POST['firstName'];
$lastName=$_POST['lastName'];
$email=$_POST['email'];
$phone=$_POST['phone'];
$gender=$_POST['gender'];
$course=$_POST['course'];
$courses=$_POST['courses'];
$occupation=$_POST['occupation'];
$message=$_POST['message'];
$checkbox=$_POST['checkbox'];

$querye = ("INSERT INTO students (firstName,lastName,email,phone,gender,course,courses,occupation,message,checkbox)
             VALUES('$firstName','$lastName','$email','$phone','$gender','$course','$courses','$occupation,'$message','checkbox')");
             $sql=mysqli_query($conn,$querye);
    mysqli_close($conn);

}
?>

【问题讨论】:

标签: php html mysql sql mysqli


【解决方案1】:

在查询之前执行此操作

$conn = Connect();
$querye = ("INSERT INTO students (firstName,lastName,email,phone,gender,course,courses,occupation,message,checkbox)
         VALUES('$firstName','$lastName','$email','$phone','$gender','$course','$courses','$occupation,'$message','checkbox')");
         $sql=mysqli_query($conn,$querye);

我所做的是在您查询之前调用您的$conn = Connect(); 函数。

【讨论】:

  • 我试过了,但是当我提交时,数据库中什么也没有出现
  • 试试var_dump($sql),看看输出是什么
  • 用$conn 来做,即:var_dump($conn)
【解决方案2】:

在您的代码中有很多问题需要修复。

第一个你没有启动连接。为此,您需要执行以下操作。

    <?php
    function Connect() {
    $dbhost = "localhost";
    $dbuser = "root";
    $dbpass = "Kpontsubless12.";
    $dbname = "register";

    $conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname) or die($conn->connect_error);
    return $conn;
}

// create a variable
if (isset($_POST['submit'])) { 
$firstName=$_POST['firstName'];
$lastName=$_POST['lastName'];
$email=$_POST['email'];
$phone=$_POST['phone'];
$gender=$_POST['gender'];
$course=$_POST['course'];
$courses=$_POST['courses'];
$occupation=$_POST['occupation'];
$message=$_POST['message'];
$checkbox=$_POST['checkbox'];

$conn = Connect();

$querye = ("INSERT INTO students (firstName,lastName,email,phone,gender,course,courses,occupation,message,checkbox)
             VALUES('$firstName','$lastName','$email','$phone','$gender','$course','$courses','$occupation,'$message','checkbox')");
             $sql=mysqli_query($conn,$querye);
    mysqli_close($conn);

}
?>

现在已经不碍事了,您需要在 sql 中删除使用变量,这会使您的代码面临 SQL 注入漏洞。开始对你的 mysqli_ 使用准备好的语句似乎你是开始编码的,所以最好养成使用准备好的语句来保护你的数据的习惯。

还有看PDO快干净又可爱。

【讨论】:

    【解决方案3】:

    确保 $conn 不为空,你没有调用连接函数

    【讨论】:

      【解决方案4】:

      您没有在代码中调用 Connect() 函数。

      【讨论】:

        【解决方案5】:

        就在您的$querye=.......... 之前写$conn = connect();

        【讨论】:

          【解决方案6】:

          您创建了连接函数,但在执行查询时忘记调用它。 试试

                 <?php
                  function Connect() {
                  $dbhost = "localhost";
                  $dbuser = "root";
                  $dbpass = "Kpontsubless12.";
                  $dbname = "register";
          
                  $conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname) or die($conn->connect_error);
                  return $conn;
              }
          
              // create a variable
              if (isset($_POST['submit'])) { 
              $firstName=$_POST['firstName'];
              $lastName=$_POST['lastName'];
              $email=$_POST['email'];
              $phone=$_POST['phone'];
              $gender=$_POST['gender'];
              $course=$_POST['course'];
              $courses=$_POST['courses'];
              $occupation=$_POST['occupation'];
              $message=$_POST['message'];
              $checkbox=$_POST['checkbox'];
          
           $conn=connect();
              $querye = ("INSERT INTO students (firstName,lastName,email,phone,gender,course,courses,occupation,message,checkbox) VALUES('$firstName','$lastName','$email','$phone','$gender','$course','$courses','$occupation,'$message','checkbox')");
                           $sql=mysqli_query($conn,$querye);
                  mysqli_close($conn);
          
              }
              ?>
          

          【讨论】:

          • 你在错误的地方调用 $conn....这是 SQL 字符串的一部分
          猜你喜欢
          • 1970-01-01
          • 2019-01-19
          • 2018-07-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-14
          • 1970-01-01
          • 2013-06-03
          相关资源
          最近更新 更多