我创建了一个用户可以更新其bio的成员区域。问题是用户提交的信息不会更新数据库中的行。
会员区
<body bgcolor="#E6E6FA">
<a href="logout.php"><button>Log Out</button></a><br><br>
<input type="text" name="age"placeholder="Enter a your age."><br>
<input type="text" name="bio"placeholder="Enter your bio.">
<input type="submit" name="submit" value="Submit your details!">
PHP
<?php
if(isset($_POST['submit'])){
$con=mysql_connect("localhost","root","****","****");
// Check connection
if (mysql_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$age = mysql_real_escape_string($_POST['age']);
$bio = mysql_real_escape_string($_POST['bio']);
$name = mysql_real_escape_string($_SESSION['username']);
mysql_query($con,"UPDATE accs SET age='.$age.' WHERE name='.$name.'");
mysql_query($con,"UPDATE accs SET bio='.$bio.' WHERE name='.$name.'");
mysql_close($con);
};
?>
</body></html>
关于这里有什么问题的任何想法?
答案 0 :(得分:0)
在您的HTML页面中,表单应位于<form></form>
标记
<form method="post" action="update.php">
<input type="text" name="age" placeholder="Enter a your age.">
<br>
<input type="text" name="bio" placeholder="Enter your bio.">
<input type="submit" name="submit" value="Submit your details!">
</form>
在您的PHP页面中 - 要检查结果,您可以暂时echo $age; echo $bio;
当您使用$_SESSION['username'];
时,我认为您在PHP代码的顶部缺少session_start();
。
同样mysql_query
只需要SQL命令,而不是连接($con
),即mysqli,强烈建议使用而不是mysql _ *。
作为旁注,请勿依赖数据库中的用户名作为更新标准。如果尚未引入,则可以向表中添加ID列
答案 1 :(得分:0)
a)创建一个合适的提交表单。在表单字段周围使用表单标签。
b)通过检查$ _POST数组来检查表单是否正确提交。
var_dump($_POST);
c)检查您是否有要插入的字段的值。 在mysql_query()之前做一个var_dump(),看看发生了什么。
var_dump($age, $bio, $name);
d)将两个查询调用合并为一个:
mysql_query($con, "UPDATE accs SET age='.$age.', bio='.$bio.' WHERE name='.$name.'");
答案 2 :(得分:0)
如果您想使用自己的页面来处理您的请求,请清空表单的action属性。例如:
<form method="post" action="">
<input type="text" name="age"placeholder="Enter a your age."><br>
<input type="text" name="bio"placeholder="Enter your bio.">
<input type="submit" name="submit" value="Submit your details!">
</form>