我希望有一个个人资料页面,我可以在不使用其他页面的情况下查看和编辑信息。
默认情况下会打印此信息:
<table border="0" style="width:35%">
<tr><td>E-mail:</td><td><?php echo $user['email']; ?></td></tr>
<tr><td>About me:</td><td><?php echo $user['about']; ?></td></tr>
</table>
<form action = "" method="post">
<input type = "submit" name="modify" value="Edit My Profile"/>
如果选择了POST ['modify'],请执行以下操作:
<table border="0" style="width:25%">
<tr><td>E-mail:</td><td><input type="text" name="email" value="<?php echo $user['email']; ?>"/></td></tr>
<tr><td>About Me:</td></tr>
</table>
<textarea name="about" rows="4" cols="64"><?php echo $user['about']; ?></textarea>
<form action = "" method="post">
<input type = "submit" name="modify2" value="Edit My Profile"/>
<input type = "submit" name="cancel" value="Cancel"/>
</form>
如果选择了POST ['modify2'],请执行以下操作:
$db = new mysqli('localhost', 'r00t', 'somepass', 'sometable');
$stmt = $db->prepare("UPDATE users SET email= ?, about= ? WHERE username = ?");
$stmt->bind_param('sss', $_POST['email'], $_POST['about'], $_SESSION['username']);
$stmt->execute();
$stmt->close();
redirect("profile.php");
除非我尝试编辑我的个人资料,否则它会按预期工作。我无法覆盖电子邮件或关于部分。我认为它与MySQL查询有关?我知道我得到了我的$ _SESSION ['用户名']。那么$ _POST ['email']或/和$ _POST ['about']是不是设置好了?
我在PhpMyAdmin中使用正确的参数尝试了我的查询,但确实有效。
或者是否无法在单页中使用双重POST请求?
答案 0 :(得分:1)
将<form>
标记放在所有输入上方。不要忘记使用htmlspecialchars引用特殊HTML字符:
<table border="0" style="width:25%">
<form action = "" method="post">
<tr><td>E-mail:</td>
<td><input type="text" name="email" value="<?php echo htmlspecialchars($user['email']); ?>"/></td>
</tr>
<tr><td>About Me:</td></tr>
</table>
<textarea name="about" rows="4" cols="64"><?php echo htmlspecialchars($user['about']); ?></textarea>
<input type = "submit" name="modify2" value="Edit My Profile"/>
<input type = "submit" name="cancel" value="Cancel"/>
</form>
MySQL查询似乎没问题。
答案 1 :(得分:1)
你的表格在桌子外面有字段。您要更新的字段应位于表单元素内。
<form action = "" method="post">
<table border="0" style="width:25%">
<tr><td>E-mail:</td><td><input type="text" name="email" value="<?php echo $user['email']; ?>"/></td></tr>
<tr><td>About Me:</td></tr>
<tr><td> <textarea name="about" rows="4" cols="64"><?php echo $user['about']; ?></textarea></td></tr></table>
<input type = "submit" name="modify2" value="Edit My Profile"/>
<input type = "submit" name="cancel" value="Cancel"/>
</form>
答案 2 :(得分:1)
表格上方的用户表单标记,以便所有输入都来自表单,而不是使用$ _POST方法获取表单的值
<table border="0" style="width:25%">
<tr><td>E-mail:</td><td><input type="text" name="email" value="<?php echo $user['email']; ?>"/></td></tr>
<tr><td>About Me:</td></tr>
</table>
<textarea name="about" rows="4" cols="64"><?php echo $user['about']; ?></textarea>
<form action = "" method="post">
<input type = "submit" name="modify2" value="Edit My Profile"/>
<input type = "submit" name="cancel" value="Cancel"/>
</form>