无法删除可变表单会话


Unable to remove a variable form session

我使用php 4.4.4,并试图从会话数组中删除一个项目。但它不会删除,还会留下一个错误。

这是我如何传递id从: page_1.php

<a href="remove.php?id=<?php echo $c_id;?>">remove<?php echo $c_id;?></a>

这是我如何删除in: remove.php

<?php
ob_start();
session_start();
   $id = (int) $_GET['id']; 
   unset($_SESSION['items'][$id]); 
   $new_id=$_SESSION['items'][$id]="";
   session_write_close();
header("Location:add_cart.php?id=".$new_id);
?>

//错误信息如下:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

***现在管理从会话数组中删除单个项目,但最后一个项目不能被删除。代码是:

ob_start();
session_start();
$id=$_GET['id'];

unset($_SESSION['items'][$id]);

我刚刚测试了代码,它可以工作。我正在运行PHP v5.5.12.

但是它应该和PHP v4.4.4一样工作,没有任何问题。

我要做的第一件事是通过添加以下代码来检查remove.php文件:
<?php
ob_start();
session_start();
   $id = (int) $_GET['id'];
   echo $_SESSION['items'][$id];
   unset($_SESSION['items'][$id]);
   echo 'Session: ' . $_SESSION['items'][$id];
   $new_id=$_SESSION['items'][$id]="";
   session_write_close();
header("Location:add_cart.php?id=".$new_id);
?>

我只是在unset函数的上方和unset函数的下方添加了一个echo语句的额外行,以查看它在销毁之前和之后是否返回任何东西。

如果它没有,基本上它没有返回任何东西或在第一个echo上出现错误,那么这意味着你试图销毁的会话变量甚至不存在,因此销毁无法定位的会话变量是不合适的。

同样,如果它输出一个错误,但在第二行我添加了echo,那么这意味着它基本上被销毁了。

这就是它应该如何看起来http://screencast.com/t/sfqw3agXhqe,其中"1"是$id变量的输出,以查看它被捕获和解析,"会话:有效会话"是我们试图销毁的会话变量确实存在的证明,错误和"会话:"重复两次是它已被销毁的证明,PHP不再知道该输出什么。

也考虑到SQL错误,正如其他人已经声明的,错误是在代码中的另一个地方生成的。