[英]PHP SQL Update Query not working
I have been trying to create a simple form to update details on a database, the PHP code is below: 我一直在尝试创建一个简单的表单来更新数据库的详细信息,PHP代码如下:
// UPDATE THE DATABASE RECORDS //
$update = $_GET['update'];
if($update == "true"){
$setDetails="UPDATE users SET email='{$_POST['email']}', api_key='{$_POST['api_key']}', api_secret='{$_POST['api_secret']}' WHERE username='{$_POST['username']}'";
if(mysql_query($setDetails)){
$updatemsg = '<div class="alert alert-success"><a href="#" class="close" data-dismiss="alert">×</a><strong>Success!</strong> Your details have been updated in our database.</div>';
}else{
$updatemsg = '<div class="alert alert-error"><a href="#" class="close" data-dismiss="alert">×</a><strong>Failure!</strong> Your details could not be updated in our database. Please try again later or contact us if this keeps happening.</div>';
}
}else if($update == "false"){
$updatemsg = '<div class="alert alert-success"><a href="#" class="close" data-dismiss="alert">×</a><strong>Success!</strong> Your changed were discarded.</div>';
}
// UPDATE THE DATABASE RECORDS //
// GET THE DATABASE RECORDS //
$getDetails="SELECT * FROM users WHERE username='$username'";
$details=mysql_query($getDetails);
$num=mysql_numrows($details);
if($num != 0){
$new_user = false;
$username=mysql_result($details,0,"username");
$email=mysql_result($details,0,"email");
$subscription_type=mysql_result($details,0,"subscription_type");
$subscription_date=mysql_result($details,0,"subscription_date");
$api_key=mysql_result($details,0,"api_key");
$api_secret=mysql_result($details,0,"api_secret");
setcookie("api_key", $api_key, time()+50000);
setcookie("api_secret", $api_secret, time()+50000);
}else{
$new_user = true;
}
// GET THE DATABASE RECORDS //
The variables defined when the database records are fetched are then used to populate a HTML form: 获取数据库记录时定义的变量随后用于填充HTML表单:
<form action="?update=true" method="POST">
<h2>Your Details</h2>
<input id="username" name="username" type="text" placeholder="" disabled="true" class="input-xlarge" value="<?=$username?>">
<input id="email" name="email" type="text" placeholder="" class="input-xlarge" value="<?=$email?>">
<input id="subscription_type" name="subscription_type" type="text" placeholder="" disabled="true" class="input-xlarge" value="<?=$subscription_type?>">
<input id="subscription_date" name="subscription_date" type="text" placeholder="" disabled="true" class="input-xlarge" value="<?=$subscription_date?>">
<input id="api_key" name="api_key" type="text" placeholder="" class="input-xlarge" value="<?=$api_key?>">
<input id="api_secret" name="api_secret" type="text" placeholder="" class="input-xlarge" value="<?=$api_secret?>">
<button type="submit" class="btn btn-success" id="saveChanges"><i class="icon-ok icon-white"></i> Save Changes</button> <a href="?update=false" class="btn btn-danger" id="discardChanges"><i class="icon-remove icon-white"></i> Discard Changes</a>
</form>
When the page is loaded first time, the form is populated with no problems, but when it is edited and submitted $updatemsg
is the 2nd one (Success) but there are no changes to the data in the database. 当第一次加载页面时,表单填充没有问题,但是当它被编辑并提交时, $updatemsg
是第二个(成功),但数据库中的数据没有变化。 Any ideas? 有任何想法吗?
It looks like it's failing because the quotes and brackets are incorrectly used. 看起来它失败了因为引号和括号被错误地使用了。 But what you need to do is something like: 但你需要做的是:
$email = mysql_real_escape_string($_POST['email']);
....
"UPDATE users SET email='$email'.....
And so forth, and so on. 等等,等等。 If not that, in the else part call mysql_error() and it will tell you if the query is failing. 如果不是这样,在else部分调用mysql_error(),它会告诉你查询是否失败。
Firstly I would declare the api secrets in a constant file instead of through a http post on a page. 首先,我会在一个常量文件中声明api机密,而不是通过页面上的http帖子。 Try the following to get the update to work assuming the post values are present 尝试以下操作以使更新生效,假设帖子值存在
$setDetails="UPDATE users SET email='".$_POST['email']."', api_key='".$_POST['api_key']."', api_secret='".$_POST['api_secret']."' WHERE username='".$_POST['username']."'"; $ setDetails =“UPDATE users SET email ='”。$ _ POST ['email']。“',api_key ='”。$ _ POST ['api_key']。“',api_secret ='”。$ _ POST ['api_secret' '。'WHERE username ='“。$ _ POST ['username']。”'“;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.