我在 SO 中看到的帖子很少与我的场景相关,但没有找到合适的解决方案。所以我发布了关于我的问题的问题。
我有一个 HTML 表单
<form method="post" id="myForm">
<label for="e_name">Name</label>
<input name="e_name" id="emp_name" value="" type="text" data-theme="a">
<label for="date">Date</label>
<input name="date" id="emp_dob" value="" data-theme="a">
<label for="gender">Gender</label>
<select name="gender" id="emp_gender" data-role="slider" data-theme="a" data-inline="true">
<option value="male">Male</option>
<option value="female">Female</option>
</select>
<label for="address">Address</label>
<textarea name="address" id="emp_address" value="" type="text" data-theme="a"></textarea><br><br>
<input type="button" id="insert" value="Submit">
</form>
<div id="someElement"></div>
我有以下内容来执行我的表单元素提交到 PHP 页面-
$(document).ready(function(){
$("#insert").click(function(e) {
e.preventDefault();
alert("am in the Insert function now");
$.ajax({
cache: false,
type: 'POST',
url: 'insert.php',
data: $("#myForm").serialize(),
success: function(d) {
$("#someElement").html(d);
}
});
});
});
这是我的 PHP -
<?php
$con=mysqli_connect("localhost","root","root","employee");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$name =" ";
$dob =" ";
$gender =" ";
$address =" ";
if(isset($_POST['emp_name'])){ $name = $_POST['emp_name']; }
if(isset($_POST['emp_dob'])){ $dob = $_POST['emp_dob']; }
if(isset($_POST['emp_gender'])){ $gender = $_POST['emp_gender']; }
if(isset($_POST['emp_address'])){ $address = $_POST['emp_address']; }
echo $name;
echo $dob;
echo $gender;
echo $address;
$sql="INSERT INTO emp_details (emp_name, emp_gender, emp_address) VALUES ('$name', '$gender', '$address')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
mysqli_close($con);
?>
现在发生的事情是,当我在表单中输入一些值并单击“提交”时,操作执行良好并且新行插入到数据库中。但是所有的行都是空的。它们只是空的,甚至不是“NULL”。 我试图在 PHP 中回显我的字段值,但那里没有输出。我的“已添加 1 条记录”显示正常,但此处未显示任何表单值。
请帮我解决这个问题。
提前致谢。
最佳答案
$_POST[]
引用 name
html-tag
的属性, 不是 id
.
例如,$_POST['emp_name']
应该是 $_POST['e_name']
此外,不要用单引号括起你的变量:
"INSERT INTO emp_details (emp_name, emp_gender, emp_address) VALUES ('$name', '$gender', '$address')";
改为这样做:
"INSERT INTO emp_details (emp_name, emp_gender, emp_address) VALUES ('" . $name . "', '" . $gender . "', '" . $address . "')";
或者使用bind_param()
来自 mysqli
当然!
关于php - HTML 表单和 PHP 到 mySQL 的数据插入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16333843/