无法提交表单到数据库

问题描述:

我想创建一个简单的表单,使用户提交数据到我的数据库。但是没有记录在数据库中。我不知道我的代码有什么问题。我阅读了各种问题,但我似乎没有得到任何解决方案。我尝试使用不同的方法,但它不工作。它连接到数据库就好了,但是当我提交的代码 这是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); 

} 
?> 
+0

仅仅因为表单已提交,并不意味着这些字段中包含任何内容,请确保它们已设置。利用[prepared statements](http://php.net/manual/en/mysqli.prepare.php)和['mysqli_error'](http://php.net/manual/en/mysqli.error.php )看到你正在使用'mysqli_ *'。 – Script47

+0

我有一个smilliar问题,我不得不强制使用javascript onClick函数sumbit形式看看https://*.com/questions/44848732/sql-insert-form-into-a-database –

确保$ conn是不是空的没有出现在数据库中,你不调用连接功能

您不要在代码中调用Connect()函数。

查询

$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();功能之前执行此操作。

+0

我试过但没有当我提交 – Saint

+0

尝试'var_dump($ sql)',看看输出是 – Regolith

+0

它显示bool(false) – Saint

你使连接功能,但忘记调用时执行查询。 尝试

 <?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); 

    } 
    ?> 
+1

你在错误的地方调用$ conn ....这就是SQL字符串的一部分 – yanguya995

只是你$querye=..........$conn = connect();

在你的代码,你需要修复有许多问题之前。

第一个你没有启动连接。要做到这一点,你需要做如下。

<?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快速干净和可爱。