无法提交表单到数据库
问题描述:
我想创建一个简单的表单,使用户提交数据到我的数据库。但是没有记录在数据库中。我不知道我的代码有什么问题。我阅读了各种问题,但我似乎没有得到任何解决方案。我尝试使用不同的方法,但它不工作。它连接到数据库就好了,但是当我提交的代码 这是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);
}
?>
答
确保$ 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();
功能之前执行此操作。
答
你使连接功能,但忘记调用时执行查询。 尝试
<?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快速干净和可爱。
仅仅因为表单已提交,并不意味着这些字段中包含任何内容,请确保它们已设置。利用[prepared statements](http://php.net/manual/en/mysqli.prepare.php)和['mysqli_error'](http://php.net/manual/en/mysqli.error.php )看到你正在使用'mysqli_ *'。 – Script47
我有一个smilliar问题,我不得不强制使用javascript onClick函数sumbit形式看看https://*.com/questions/44848732/sql-insert-form-into-a-database –