php - 声明为 mysql 表的行

标签 php mysql

好的,我会先展示我的代码,然后我会解释哪里出了问题:

$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/

相关文章:

php - 在 Magento 中多次调用 $model->save() 覆盖数据

PHP:别名 $_SESSION 变量

php - Mysql 选择大于某个日期时间的所有记录

php - 不先选择mysql更新字段

java - SELECT 和 WHERE 使用 PreparedStatement

php - 如何屏蔽 URL 中的扩展名

php - Laravel 5.5 使用参数从 Blade View 调用 Controller 函数

php - 我应该将 PHPMyAdmin 上传到服务器吗

mysql - Mysql SELECT CASE WHEN表达式的使用方法

php - 奇怪的 $_GET 行为