我可以在PHP中有2个标题位置吗?
所以,我知道我的代码正在运行,我已经尝试过取消所有步骤以查看bug所在的位置,但我仍然不断收到错误 我的php id=0 你们能告诉我怎么修改代码吗 错误如下: 未定义的变量列表\u id。它在本地计算机上工作,但在 上传到服务器 谢谢 以下是我的代码:我可以在PHP中有2个标题位置吗?,php,Php,所以,我知道我的代码正在运行,我已经尝试过取消所有步骤以查看bug所在的位置,但我仍然不断收到错误 我的php id=0 你们能告诉我怎么修改代码吗 错误如下: 未定义的变量列表\u id。它在本地计算机上工作,但在 上传到服务器 谢谢 以下是我的代码: if(!empty($_GET['id'])){ $list_id = intval(($_GET['id'])); try { $sql = 'SELECT * FROM items where id =' . $li
if(!empty($_GET['id'])){
$list_id = intval(($_GET['id']));
try {
$sql = 'SELECT * FROM items where id =' . $list_id;
$query = $pdo->prepare($sql);
$query->execute();
} catch(Exception $e) {
echo $e->getMessage();
die();
}
$list = $query->fetch(PDO::FETCH_ASSOC);
if ($list == FALSE) {
header("location: index.php");
}
}
if ($list_id == 0) {
header("location: index.php");
}
您只需实例化变量
$list\u id
:
$list_id = 0; // <-- HERE
if(!empty($_GET['id'])){
$list_id = intval(($_GET['id']));
...
...
$list\u id=0;// 如果没有id
参数,看起来好像要重定向到索引。由于您已经检查了它的存在,请在else
子句中重定向。删除最后一个块并添加:
else
{
header("location: index.php");
exit;
}
您可能需要添加退出在if
块中调用header()
之后的code>,这样就不会执行使用数据库的代码。这里似乎有一些问题。我已经添加了内联评论
if(!empty($_GET['id'])){
$list_id = intval($_GET['id']); //was double parenthesis here
try {
$sql = 'SELECT * FROM items where id =' . $list_id;
$query = $pdo->prepare($sql);
$query->execute();
} catch(Exception $e) {
echo $e->getMessage();
die();
}
$list = $query->fetch(PDO::FETCH_ASSOC);
$count = count($list); //count result and use for comparison instead of false
if ($count === 0) {
header("location: index.php");
exit;
}
} else {
header("location: index.php"); //if no $_GET, redirect
exit;
}
如果您正确地缩进代码,您很快就会明白为什么会出现这种错误。您的行if($list\u id==0){
在将设置$list\u id
的条件块之外,因此无论$list\u id
是否已初始化,它都将始终执行。我建议在任何位置头之后始终添加退出
,这将避免不好的意外。此外,位置URI应该是绝对的,因此正确的语法应该是de>header(“位置:http://.”$\u SERVER['SERVER\u NAME'.“/fullpath to index.php”);