我已经在这里对其他人的问题进行了一些研究,但我看不出有什么问题。我正在尝试更新已经拥有当前用户(已登录)数据的表单,但我希望他们能够更新他们的个人资料。
这就是我的代码:
<?php
// Retreive db data
$me = $_SESSION['username'];
require('db.php');
$data = "SELECT username, email FROM users WHERE username='$me'";
$query = mysql_query($data);
$data2 = mysql_fetch_array($query);
// Updating
$Username=$data2['username'] ;
$Email= $data2['email'] ;
if(isset($_POST['save']))
{
$username_save = mysql_real_scape_string($_POST['username']);
$email_save = mysql_real_scape_string($_POST['email']);
mysql_query("UPDATE users SET username ='$username_save', email ='$email_save' WHERE username = '$me'")
or die(mysql_error());
echo "Saved!";
}
?>
<form role="form">
<div class="form-group">
<label for="username">Username: </label>
<input type="text" class="form-control" name="username_save" value="<?php echo $data2['username']?>">
</div>
<div class="form-group">
<label for="pwd">Email Address: </label>
<input type="email" class="form-control" name="email_save" value="<?php echo $data2['email']?>">
</div>
<button input type="Submit" name="save" class="btn btn-info">Submit</button>
<button input type="Sumbit" name="delete" class="btn btn-danger">Delete</button>
</form>
当我提交新值(回显值正常)并按提交(用户名= danielleeee email = test@danielle.com)时,我的网址如下所示:
页/管理/ edit.php username_save = danielleeee&安培; email_save =测试%40danielle.com&安培;保存=
如果有人能为我揭开这一点,那就太棒了! 谢谢。
答案 0 :(得分:2)
<form>
,则 <form role="form">
默认使用GET方法。
所以,=&gt; <form role="form" method="post">
因为你正在使用POST数组。
奇怪的是,错误报告也不会让你任何关于它的事情。
此外,请确保在使用会话后启动会话。
然而,错误报告会
但是,name="username_save"
和name="email_save"
这些与您的POST阵列不同。
$_POST['username']
=&gt; $_POST['username_save']
$_POST['email']
=&gt; $_POST['email_save']
那些需要匹配和错误报告的人会抛出未定义的索引通知。
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。
脚注:
最好为POST数组使用条件!empty()
。 !
是PHP中的“NOT”运算符。
并确保没有传递空值。
即:
if(isset($_POST['save']))
{
if(!empty($_POST['username_save']) && !empty($_POST['email_save']) ){
$username_save = mysql_real_scape_string($_POST['username_save']);
$email_save = mysql_real_scape_string($_POST['email_save']);
mysql_query("UPDATE users SET username ='$username_save', email ='$email_save'
WHERE username = '$me'")
or die(mysql_error());
echo "Saved!";
}
}
旁注:您可以将&&
(AND)替换为||
(或),具体取决于您希望使用的条件。
另外,如上所述。 MySQL_ API将从未来的PHP版本中删除。最好继续使用MySQLi或PDO API并使用准备好的语句。
参考文献: