【问题标题】:header('location:exaxmple.php') not working in pdoheader('location:exaxmple.php') 在 pdo 中不起作用
【发布时间】:2015-04-17 05:22:21
【问题描述】:

我想知道为什么这只发生在我的代码中。

在我的代码中,查询成功执行,但没有重定向。

工作代码(pdo):

<?php

  $fname=$_POST['fname'];
  $lname=$_POST['lname'];
  $sql="INSERT INTO contacts(first_name,last_name)";
  $query = $db->prepare($sql);
  $success=$query->execute(array(':fname'=>$fname,':lname'=>$lname,);
  if($success)
       {
           header('location:contacts.php');

       }
       else
       {
           echo "Error";

       }
?>

它在localhost 上工作,但不在服务器上。这是与我的代码有关的问题吗?

【问题讨论】:

  • 如果我使用if($success) { echo "s";},它将回显并插入。但问题只在于标题位置
  • 检查你的服务器是否支持
  • @saleemnfs :它支持,
  • 这是所有的php代码吗?如果标头已经发送,您将无法发送标头。确保在标头之前没有输出任何内容或使用缓冲(服务器上 php.ini 中的缓冲选项可能不同)。
  • 调试更多! “不工作”不够细化,不能说任何话。是否进入if ($success) 条件?是否 trying 输出标题?您是否检查了错误日志以查找可能的错误消息?

标签: php mysql sql pdo


【解决方案1】:

尝试以下方法:

header('Location: http://' . $_SERVER['HTTP_HOST'] . '/contacts.php');

原因是在服务器上工作时应该使用绝对 URL

【讨论】:

    【解决方案2】:

    看起来很奇怪...
    因为代码:header('location:contacts.php'); 应该可以工作(这里一切都正确),
    我想你应该收到:echo "Error"; 因为如我所见,你的 sql 有错误。

    改为:

      $sql="INSERT INTO contacts(first_name,last_name)";
    

    你应该写:

    $sql="INSERT INTO contacts SET first_name = :fname, last_name = :lname";
    

    【讨论】:

      【解决方案3】:

      试试这个,它应该适合你。

      HTML:&lt;meta http-equiv="refresh" content="0;url=http://yoursite.com /contacts.php"&gt;

      JavaScript #1:&lt;script&gt;window.location = "http://yoursite.com/contacts.php";&lt;/script&gt;

      JavaScript #2:&lt;script&gt;window.navigate("http://yoursite.com/contacts.php");&lt;/script&gt;

      【讨论】:

      • 你是什么意思?我把这个放在哪里
      猜你喜欢
      • 2021-12-30
      • 1970-01-01
      • 2011-11-03
      • 1970-01-01
      • 2023-02-18
      • 2016-09-11
      • 1970-01-01
      相关资源
      最近更新 更多