我正在处理一个小网站的小问题。基本上,我有一些设置,用户可以在<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>");
}
}
&#34; newentry.php&#34; (表格,此页面上没有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>
&#34; addentry.php&#34; (处理表单并将其添加到数据库中)&#34;
<?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);
}
?>
答案 0 :(得分:5)
我认为此代码会为您解决问题。
$array = $rs->fetch_array(MYSQL_ASSOC); // Remove this line
while($array = $rs->fetch_array(MYSQL_ASSOC)){
}
所以只将其改为
while($array = $rs->fetch_array(MYSQL_ASSOC)){
}
因为当您调用方法fetch_array()
时,它将获取第一条记录。所以当你再次调用while循环中的方法时,它将仅从第二个记录开始。