这是我的第一个项目。我想,当我在表单中更新我的记录时,所有字段都预先填充了以前的数据。它们存储在表格中。
这是我的功能代码: -
public function getData($query)
{
$result = $this->connection->query($query);
if ($result == false) {
return false;
}
$rows = array();
while ($row = $result->fetch_assoc()) {
$rows[] = $row;
}
return $rows;
}
这是我的html文件代码:
<?php
$result = $crud->getData("SELECT * FROM creative_workshop ");
foreach ($result as $res) {
$id = $res['id'];
$title = $res['title'];
$message = $res['message'];
$title1 = $res['title1'];
$message1= $res['message1'];
$image1= $path .$res['image1'];
$title2 = $res['title2'];
$message2= $res['message2'];
$image2= $path .$res['image2'];
}
?>
<form name="form" method="post" action="" enctype="multipart/form-data">
<textarea rows="4" cols="50" name="title" value="<?php echo $title;?>">
<textarea rows="4" cols="50" name="message" value="<?php echo $message;?>">
</form>
答案 0 :(得分:2)
问题在于这一句话
$result = $crud->getData("SELECT * FROM creative_workshop ");
确保成员函数$crud->getData
正常工作,getData未返回获取的结果
答案 1 :(得分:0)
Textarea没有值属性。 您可以使用。喜欢
<form name="form" method="post" action="" enctype="multipart/form-data">
<textarea rows="4" cols="50" name="title" ><?php echo $title;?></textarea>
<textarea rows="4" cols="50" name="message" ><?php echo $message;?></textarea>
</form>
答案 2 :(得分:0)
首先:
您目前在表单上执行的操作是从表中获取所有行并循环遍历它们,最终返回最后一行并在表单中显示。
很遗憾,您的数据库无法保证您的数据会以certain order的形式返回。
这意味着循环显示SELECT
的结果可能会返回输入的最后一行但不保证。
相反,您想要使用ORDER BY
或者选择行,这样会更有效,添加一个特定行的位置。
如果您有自动递增ID字段,可以查看this。
<强>第二强>
要在textarea
字段中显示数据,您需要将其回显到标记内容,而不是属性,即:
<textarea><?php echo $text ?></textarea>
<强>第三强>
直接从您的数据源(在您的情况下是您的数据库表)回显文本到页面是不安全的。
您应该考虑转义它以避免不良行为 - 特别是在呈现的数据中使用HTML。
想象一下$text
是这样的:
</textarea><script>alert('uh-oh');</script>
将其解析为表单会使得页面上生成的HTML看起来像这样,从而导致在页面上执行JS。
<textarea></textarea><script>alert('uh-oh');</script></textarea>
使用htmlentities避免此行为:
<textarea><?php echo htmlentities($text) ?></textarea>
输出变为:
<textarea></textarea><script>alert('uh-oh');</script></textarea>
看起来很糟糕,但阻止浏览器将内容呈现为HTML,从而保护您的表单: - )