我有一个页面,其中包含一个php页面的链接,该页面从$ _GET获取数据并更新数据库。之后,它将用户返回到主页:
header("Location: http://localhost/");
事情是,这似乎“中断”了代码的mysql部分。如果我删除了这个重定向,数据库中的所有内容都会更新,但是当我把它放回去时,没有任何内容会更新...
这是数据库更新代码,我使用的是我的一个类作为mysql包装器:
$conn->where('hash',$data1['hash']);
$conn->update(TABLE_ITEMS,$newData1);
$conn->where('hash',$data2['hash']);
$conn->update(TABLE_ITEMS,$newData2);
- 页面上没有文字或echo(),
标记前没有空格<?php
<?php
和$_SESSION
$_GET
用于重定向页面header();
答案 0 :(得分:1)
如果在输出先前的内容时发送标题,则会出现可能导致脚本停止执行的错误。因此,如果标题位于更新之上,则可能根本不执行更新。无论您是否看到此错误,都取决于您的设置。
<?
echo 'yo';
header('Location: ....'); // <-- error
Update(); // Never gets executed
输出不必是echo
。在开幕<?
之前,它甚至可以是一个空格。
答案 1 :(得分:0)
没有看到很多代码,很难确定,但我的猜测是PHP页面继续完全正常工作。我建议可能会发生的是,重定向页面(即您的主页)本身正在进行一些数据库工作,这会覆盖原始页面所做的更改。
正如我所说的,在没有更多代码的情况下(或者甚至是有关数据的任何细节或网站的内容),这是一个非常疯狂的猜测,但我认为值得调查这种可能性。
答案 2 :(得分:0)
尝试将ob_start()放在文件的顶部。它有时会有帮助。在调用header()之前无法输出。 显示更多代码。认为错误是少的。
答案 3 :(得分:-1)
我不知道为什么会这样,但事实证明,如果我改变了这个:
header("Location: http://localhost/");
到此:
header('Location: http://localhost/');
一切正常。的古怪!! 强>