如何用PHP将值插入MySQL表
我有一个表[user\u id,name],它预先填充了一个user\u id列表。我想创建一个表单,允许用户根据其用户id注册名称 以下是基本的HTML表单:如何用PHP将值插入MySQL表,php,mysql,sql,Php,Mysql,Sql,我有一个表[user\u id,name],它预先填充了一个user\u id列表。我想创建一个表单,允许用户根据其用户id注册名称 以下是基本的HTML表单: <form action="" id="contact-form" class="form-horizontal" method="post"> <label class="control-label" for="inputName">Enter Name</label>
<form action="" id="contact-form" class="form-horizontal" method="post">
<label class="control-label" for="inputName">Enter Name</label>
<input type="text" class="form-control input-lge" name="inputName" id="inputName">
<input type="hidden" class="form-control" id="hidUid" name="hidUid" value="<?php echo $reg_user_id?>">
<input type="submit" id="sub_button" class="btn btn-default btn-lg" value="Save"/>
</form>
我的问题是表单提交成功,但数据库没有更新。我在PHP输出或控制台日志中都没有错误。有什么想法吗?如果你想看到错误,试试这个
if(isset($_POST['hidUid']) && isset($_POST['inputName'])){
$inputName = $_POST['inputName'];
$inputUid = $_POST['hidUid'];
if ($stmtint = $mysqli->prepare("SELECT user_email FROM users WHERE user_ID = ?")) {
$stmtint->bind_param("s", $inputUid);
if ($stmtint->execute()) {
$stmtint->bind_result($user_email);
$stmtint->fetch();
$stmtint->close();
}else{
die("Error Message:".$mysqli->error);
}
if ($user_email != "" && $inputName != "") {
$user_email="";
if ($stmtint = $mysqli->prepare("UPDATE users SET name = ? where user_ID = ?")) {
$stmtint->bind_param("ss", $inputName,$inputUid);
if ($stmtint->execute()) {
$stmtint->close();
echo "User saved successfully";
}else{
die("Error Message:".$mysqli->error);
}
exit;
}
}else{
echo "Please enter correct Name and password";
exit;
}
}
}
如果要查看错误,请尝试此操作
if(isset($_POST['hidUid']) && isset($_POST['inputName'])){
$inputName = $_POST['inputName'];
$inputUid = $_POST['hidUid'];
if ($stmtint = $mysqli->prepare("SELECT user_email FROM users WHERE user_ID = ?")) {
$stmtint->bind_param("s", $inputUid);
if ($stmtint->execute()) {
$stmtint->bind_result($user_email);
$stmtint->fetch();
$stmtint->close();
}else{
die("Error Message:".$mysqli->error);
}
if ($user_email != "" && $inputName != "") {
$user_email="";
if ($stmtint = $mysqli->prepare("UPDATE users SET name = ? where user_ID = ?")) {
$stmtint->bind_param("ss", $inputName,$inputUid);
if ($stmtint->execute()) {
$stmtint->close();
echo "User saved successfully";
}else{
die("Error Message:".$mysqli->error);
}
exit;
}
}else{
echo "Please enter correct Name and password";
exit;
}
}
}
您说“表单提交成功”;您是否检查了
POST
数据?此外,您不检查查询是否失败,因此它将以静默方式失败。SELECT为您提供了什么值?它似乎根本没有被使用过。为什么不只执行insert呢。您应该添加mysqli错误处理,您可以查看是否有任何mysqli错误。@MikeBrant谢谢,我如何添加错误处理?尝试回显mysql\u error()
。只需始终检查mysqli->prepare()
,->execute()
等的结果是否按预期返回值。如果不查看,您可以检查->error()
以查看出了什么问题。您可以说“表单提交成功”;您是否检查了POST
数据?此外,您不检查查询是否失败,因此它将以静默方式失败。SELECT为您提供了什么值?它似乎根本没有被使用过。为什么不只执行insert呢。您应该添加mysqli错误处理,您可以查看是否有任何mysqli错误。@MikeBrant谢谢,我如何添加错误处理?尝试回显mysql\u error()
。只需始终检查mysqli->prepare()
,->execute()
等的结果是否按预期返回值。如果不查看,您可以检查->error()
以查看出了什么问题。