Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.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 查询成功后重定向到主页_Php_Mysql_Redirect_Sql Insert - Fatal编程技术网

Php 查询成功后重定向到主页

Php 查询成功后重定向到主页,php,mysql,redirect,sql-insert,Php,Mysql,Redirect,Sql Insert,我有一个简单的表单,可以将用户插入到我的数据库中,但我希望表单在查询完成后重定向到我的主页。我已经尝试了几种方法,要么我得到一个错误,查询没有运行,要么它没有重定向。这是我最后一次试用的表单页面 <?php require("db.php"); ?> <?php include 'query.php';?> <html> <head> <title>Insert a Record in MySQL Database&l

我有一个简单的表单,可以将用户插入到我的数据库中,但我希望表单在查询完成后重定向到我的主页。我已经尝试了几种方法,要么我得到一个错误,查询没有运行,要么它没有重定向。这是我最后一次试用的表单页面

<?php
require("db.php");
?>
<?php include 'query.php';?>
<html>
   <head>
      <title>Insert a Record in MySQL Database</title>
   </head>

   <body>
      <?php
         if(isset($_POST['insert']))
         {

            $user_added = $_POST['user_added']; 

            $insert_query = "INSERT INTO userList ";
            $insert_query .= "(Book, User_0, User_1) ";
            $insert_query .= "VALUES ";
            $insert_query .= "('$user_added', '0', '1')";

            $retval = mysqli_query($connection, $insert_query);

            if(!$retval )
            {
                 die ("The error is: " . mysqli_error($connection));
            }
            echo "Updated data successfully\n";
         }
         else
         {
            ?>
               <form method="post" action="<?php $_PHP_SELF ?>">
                  <table width="400" border="0" cellspacing="1" cellpadding="2">

                     <tr>
                        <td width="100">Book to Add</td>
                        <td><input name="user_added" type="text" id="user_added"></td>
                     </tr>
                     <tr>
                        <td width="100"> </td>
                        <td> </td>
                     </tr>

                     <tr>
                        <td width="100"> </td>
                        <td>
                           <input name="insert" type="submit" id="insert" value="Insert" onclick="window.location='home.php';">
                        </td>
                     </tr>

                  </table>
               </form>
            <?php
         }
      ?>
   </body>
</html>
<?php
    mysqli_close($connection);
?>
但是我得到了以下错误

Warning: Cannot modify header information - headers already sent by (output started at /home/myusername/public_html/home.php:11) in /home/myusername/public_html/home.php on line 30
Updated data successfully

因此,数据库已更新,但重定向不起作用。当然,当我尝试第二种方法时,我从表单中删除了
onclick=“window.location='home.php';”
。有什么建议吗?

就在
标题之前(“Location:test.php”)添加以下内容,使其看起来像:

flush();
ob_flush();
header("Location: test.php");
您需要刷新标题才能重新设置。

更改

header("Location: test.php");

echo“window.location.href=“test.php”;

通过PHP重定向受标题影响。正如错误所示,一旦页面输出开始,就无法发送标题

从:

记住,必须在调用任何实际输出之前调用header() 通过普通HTML标记、文件中的空行或PHP发送

在运行PHP之前,您有HTML。(这通常不是一个好主意;理想情况下,数据库和其他准备PHP工作将在任何输出之前在单独的文件中完成,以便它们可以影响重定向和其他头文件。)

让代码正常工作的一个快速方法是回到JavaScript,它随时都可以重定向

if( !$retval)
    die ("The error is: " . mysqli_error($connection));
else
    echo "<script>location.href = 'somewhere.php';</script>";
if(!$retval)
die(“错误是:”.mysqli_error($connection));
其他的
echo“location.href='somewhere.php';”;
您必须放置标题(“位置:test.php”);在任何回显指令或html输出之前,请在开始时使用

<?php
  ob_start();
?>

在这一页的顶部。。希望对你有帮助。。 有关更多详细信息,请访问此链接

当我尝试此操作时,仍然会出现相同的错误
警告:无法修改标题信息-标题已经由/home/myusername/public\u html/home.php:11)在/home/myusername/public\u html/home.php的第32行发送。
谢谢,javascript重定向非常有效。我仍然会尝试看看如何让这个重定向与PHP一起工作,但这是一个进步。您可能希望看看像CodeIgniter这样的MVC(模型、视图、控制器)库。这些(通常)强化了PHP预输出的概念,并提供了大量方便的库和帮助程序,以节省您在代码上的大量时间。这将使用一种完全不同的重定向方法和完全不同的行为。
if( !$retval)
    die ("The error is: " . mysqli_error($connection));
else
    echo "<script>location.href = 'somewhere.php';</script>";
<?php
  ob_start();
?>