php - 查询成功后跳转到首页

标签 php mysql redirect sql-insert

<分区>

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

<?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);
?>

当我以这种方式尝试时,它会显示 Updated data successfully 文本,但它不会重定向。我尝试了以下方法

if(!$retval )
{
     die ("The error is: " . mysqli_error($connection));
}
else
{
header("Location: test.php");
echo "Updated data successfully\n";
}

但我得到以下错误

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';"。有什么建议吗?

最佳答案

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

来自PHP manual :

Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP.

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

让您的代码正常工作的一种快速方法是回退到 JavaScript,它很乐意随时重定向。

if( !$retval)
    die ("The error is: " . mysqli_error($connection));
else
    echo "<script>location.href = 'somewhere.php';</script>";

关于php - 查询成功后跳转到首页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32461661/

相关文章:

java - 使用 Curl/HttpClient 重定向 : header "Location" missing

php - php中如何将页面重定向到同一页面

php - 我需要使用 PHP 转义 javascript 函数的字符串参数的帮助

php - 在 session 中存储 php 变量并调用分页链接

mysql - 我如何在 GAE 上导入 MySQLdb 模块?

mysql - MySQL中如何拒绝无效的插入操作?

php - 在 Laravel 5.3 中使用相同的表单进行创建和编辑

php - 空白页 Laravel : 50k+ table entries

php - 在PHP MYSQL中获取显示查询结果的按钮

asp.net-mvc - asp.net MVC Url.Content() CDN 重定向