PHP和SQL无法正常工作

时间:2015-02-24 03:15:38

标签: php mysql

我正在处理一个小网站的小问题。基本上,我有一些设置,用户可以在<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);
}
?>

1 个答案:

答案 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循环中的方法时,它将仅从第二个记录开始。