我使用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错误,正如其他人已经声明的,错误是在代码中的另一个地方生成的。