好的,我会先展示我的代码,然后我会解释哪里出了问题:
$sql_result = $mysqli->query("SELECT * FROM account_information WHERE username = '".$_SESSION["username"]."'");
while ($row = mysqli_fetch_assoc($sql_result)) {
$about=$row['about'];
echo'<table>';
echo
<<<EOT
<form action="profile.php" method="post">
<textarea name="about" rows="5" cols="50" >{$about}</textarea>
<td><input name="submit" type="submit" value="submit"></td>
</form>
EOT;
echo'</table>';
if ( isset( $_POST['submit'] ) ) {
$about = $_POST['about'];
$sql_result2 = $mysqli->query("update account_information SET about='".$about."' WHERE username = '".$_SESSION["username"]."'");
$edit=false;
echo "<div id='about'>".$about."</div>";
}
}
现在您可以看到,当您在文本区域中键入内容时,它应该进入我的数据库(确实如此),当我再次进入该页面时,我希望显示文本。代码:$about=$row['about'];
应该这样做。这不是我似乎无法找到问题所在。一开始它只是不显示任何它应该显示的内容(保存在数据库中的文本区域的先前条目)我应该怎么做?有什么问题?
最佳答案
您应该将提交代码放在 while 循环之外和选择查询之上。
$about = '';
if ( isset( $_POST['submit'] ) ) {
$about = $_POST['about'];
$sql_result2 = $mysqli->query("update account_information SET about='".$about."' WHERE username = '".$_SESSION["username"]."'");
$edit=false;
echo "<div id='about'>".$about."</div>";
}
$sql_result = $mysqli->query("SELECT * FROM account_information WHERE username = '".$_SESSION["username"]."'");
等等....
在您的代码中,您首先从数据库中获取旧值,然后将其再次放入数据库中。替换代码新代码和您在文本区域中输入的文本。因此,您需要先将其保存在数据库中,然后获取它以获取更新后的文本。
关于php - 声明为 mysql 表的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18954747/