链接到此表单的PHP不是';t将条目提交到我的数据库
我在一个网站上有一个表单,需要将信息提交到MySQL数据库。我主要是一名网页设计师,PHP对我来说有些陌生。我编写了以下PHP代码作为HTML表单的操作,如下所示:链接到此表单的PHP不是';t将条目提交到我的数据库,php,html,forms,mysqli,Php,Html,Forms,Mysqli,我在一个网站上有一个表单,需要将信息提交到MySQL数据库。我主要是一名网页设计师,PHP对我来说有些陌生。我编写了以下PHP代码作为HTML表单的操作,如下所示: 从查询中的字符串中删除mysqli_real_escape_字符串,并将变量设置为等于post值。您的“id”也需要从插入中删除,因为数据库中的id应该是自动递增的。在错误验证和准备语句中添加,以帮助防止sql注入 //insert data <?php if(!empty($_POST)) {
从查询中的字符串中删除mysqli_real_escape_字符串,并将变量设置为等于post值。您的“id”也需要从插入中删除,因为数据库中的id应该是自动递增的。在错误验证和准备语句中添加,以帮助防止sql注入
//insert data
<?php
if(!empty($_POST)) {
if(isset($_POST['submit'])){
//connect to mysql
$mysqli = mysqli_connect( 'localhost', 'user', 'pass', 'dbname' );
//check connection
if (!$mysqli) {
die( 'Connect Error: ' . mysqli_error());
}
$u_fname = mysqli_real_escape_string($mysqli, $_POST['u_fname']);
$u_lname = mysqli_real_escape_string($mysqli, $_POST['u_lname']);
$u_email = mysqli_real_escape_string($mysqli, $_POST['u_email']);
//VALIDATION ARRAY
$error = [
"u_fname"=> '',
"u_lname"=> '',
"u_email"=> ''
];
if($u_fname == '') {
$error['u_fname'] = "Please Enter Your First Name";
}
if($u_lname == '') {
$error['u_fname'] = "Please Enter Your Last Name";
}
if($u_email == '') {
$error['u_fname'] = "Please Enter Your Email";
}
else {
//IF NO ERRORS INSERT DATA
$stmt = mysqli_prepare($mysqli, "INSERT INTO `table` (`u_fname`, `u_lname`, `u_email`) VALUES (?, ?, ?)");
mysqli_stmt_bind_param($stmt, 'sss', $u_fname, $u_lname, $u_email);
mysqli_stmt_execute($stmt);
//print response from sql
if ($stmt ) {
echo "Success!";
}
else {
die("Error" . mysqli_error());
}
//close connection
mysqli_close($mysqli);
}
}
}
?>
//插入数据
至于形式呢
<div class="form-container">
<form action="signupform.php" method="post" class="isubmit" name="signup">
<input required type="text" name="u_fname" class="first-name" placeholder="First Name">
<span><?php echo isset($error['u_fname']) ? $error['u_fname'] : ''?></span>
<input required type="text" name="u_lname" class="last-name" placeholder="Last Name">
<span><?php echo isset($error['u_lname']) ? $error['u_lname'] : ''?></span>
<input required type="text" name="u_email" class="email" placeholder="Email">
<span><?php echo isset($error['u_email']) ? $error['u_email'] : ''?></span>
<button class="isubmit submit-text" type="submit" name="submit">submit</button>
</form>
</div>
提交
如果ID
是您的主键,并且是自动递增的,那么您需要从插入中省略它。您是否收到任何错误,并且是否启用了display\u errors
?@prodigitalson不需要,将其设置为NULL将使MySQL使用自动增量值。这里的问题是不可能在字符串中以这种方式使用$mysqli->real\u escape\u string()
。它需要在字符串之外,尽管事先准备好的语句会更好。@rickdenhaan你说得对。我已经删除了真正的转义字符串,我将研究如何使用准备好的语句。谢谢。您是否强制使用此mysq l_real_escape_string方法?或者任何好的插入都可以?任何人,我都会得到它,因为你需要确定你觉得什么对你最合适。@Jpegzilla,如果这个答案对你有效,你能接受吗?谢谢很抱歉耽搁了这么久,工作有点忙,这几天我忘记了。不幸的是,这仍然不起作用,我不知道为什么。我没有看到mysql有任何错误,代码中也没有错误。我真的不明白这里有什么问题,但谢谢你迄今为止的帮助,我真的很感激。你没有名字。提交应该提交我对上一个答案的编辑。让我知道它是否适合你。它缺少一个$_POST['submit']和button元素中的一个name属性,因此即使您单击了按钮,表单也没有被提交到任何内容。我将其更新为全部过程化PHP,因为我对OOP不够熟悉,但为了安全起见,还添加了代码,以便通过prepared语句执行。