Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP和SQL不能正常工作_Php_Mysql - Fatal编程技术网

PHP和SQL不能正常工作

PHP和SQL不能正常工作,php,mysql,Php,Mysql,我在一个小网站上遇到了一个小问题。基本上,我设置了一些东西,用户可以在元素中输入他们想要的任何内容。提交该表单时,会将其发送到PHP脚本以将其存储在数据库中。然后,页面被重定向到索引年龄,其中显示了他们提交的所有条目。这是可行的,但方式很奇怪 因此,到目前为止,他们键入的任何内容都不会显示在index.php上,直到他们再次转到表单并提交另一个条目。然后,以前的那条出现了,而不是他们刚刚放进去的那条,而那条链条还在继续 我希望它能显示所有内容,包括他们提交表格时的内容。这是我的3个脚本 inde

我在一个小网站上遇到了一个小问题。基本上,我设置了一些东西,用户可以在元素中输入他们想要的任何内容。提交该表单时,会将其发送到PHP脚本以将其存储在数据库中。然后,页面被重定向到索引年龄,其中显示了他们提交的所有条目。这是可行的,但方式很奇怪

因此,到目前为止,他们键入的任何内容都不会显示在index.php上,直到他们再次转到表单并提交另一个条目。然后,以前的那条出现了,而不是他们刚刚放进去的那条,而那条链条还在继续

我希望它能显示所有内容,包括他们提交表格时的内容。这是我的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>");
                            }
                        }
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>
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);
}
?>

我认为这段代码为您带来了问题

$array = $rs->fetch_array(MYSQL_ASSOC); // Remove this line
while($array = $rs->fetch_array(MYSQL_ASSOC)){

}
因此,将其更改为“仅”

while($array = $rs->fetch_array(MYSQL_ASSOC)){

}

因为当您调用fetch_数组方法时,它将获取第一条记录。因此,当您再次调用while循环中的方法时,它将仅从第二条记录开始

我认为这段代码为您带来了问题

$array = $rs->fetch_array(MYSQL_ASSOC); // Remove this line
while($array = $rs->fetch_array(MYSQL_ASSOC)){

}
因此,将其更改为“仅”

while($array = $rs->fetch_array(MYSQL_ASSOC)){

}
因为当您调用fetch_数组方法时,它将获取第一条记录。因此,当您再次调用while循环中的方法时,它将仅从第二条记录开始