我正在处理一个小网站的小问题.基本上,我有一些设置,用户可以在<textarea>元素中输入他们想要的任何内容.提交该表单时,会将其发送到PHP脚本以将其存储在数据库中.然后,页面将重定向到索引年龄,该年龄显示他们已提交的所有条目.这很有效,但是很奇怪.
所以,截至目前,无论他们输入什么内容都没有显示在index.php上,UNTIL再次进入表单,并提交另一个条目.然后,之前的那个出现了,而不是他们刚刚放入的那个,而这个链只是继续下去.
我希望它能够显示所有内容,包括他们提交表单时的内容.这是我的3个脚本
的index.php
define("HOSTNAME", "localhost");
define("USERNAME", "root");
define("PASSWORD", "");
define("DB_NAME", "testdatabase");
$retrieve = new mysqli(HOSTNAME, USERNAME, PASSWORD, DB_NAME);
$query = "SELECT * FROM entries ORDER BY EntryID DESC";
$rs = $retrieve->query($query);
if (!$rs){
echo($retrieve->error);
} else {
$array = $rs->fetch_array(MYSQL_ASSOC);
while($array = $rs->fetch_array(MYSQL_ASSOC)){
echo("<div class='panel panel-default'>
<p>" . $array['EntryContent'] . "</p>
</div>");
}
}
Run Code Online (Sandbox Code Playgroud)
"newentry.php"(表格,此页面上没有PHP代码)
<form method='post' action='addentry.php'>
<textarea name='EntryContent' class='styled'></textarea>
<span class='pull-right'>
<input type='reset' class='btn btn-default'/>
<input type='submit' class='btn btn-primary'/>
</span>
</form>
Run Code Online (Sandbox Code Playgroud)
"addentry.php"(处理表单并将其添加到数据库中)"
<?php
$EntryContent = htmlentities($_POST['EntryContent']);
define("HOSTNAME", "localhost");
define("USERNAME", "root");
define("PASSWORD", "");
define("DB_NAME", "testdatabase");
$connection = new mysqli(HOSTNAME, USERNAME, PASSWORD, DB_NAME);
$sql = "INSERT INTO entries VALUES(null, \"$EntryContent\")";
if ($connection->query($sql) == true){
header("Location: index.php");
} else {
echo("Error connecting to database.<br>" . $connection->error);
}
?>
Run Code Online (Sandbox Code Playgroud)
我认为这段代码会给你带来麻烦.
$array = $rs->fetch_array(MYSQL_ASSOC); // Remove this line
while($array = $rs->fetch_array(MYSQL_ASSOC)){
}
Run Code Online (Sandbox Code Playgroud)
所以只改为
while($array = $rs->fetch_array(MYSQL_ASSOC)){
}
Run Code Online (Sandbox Code Playgroud)
因为当你调用方法fetch_array()时它将获取第一条记录.所以当你再次调用while循环中的方法时,它将仅从第二个记录开始.
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |