我正在使用php 4.4.4并尝试从会话数组中删除一个项目。但它没有删除,另外还有一个错误。
这是我传递id以从中删除的方式: 的 page_1.php
<a href="remove.php?id=<?php echo $c_id;?>">remove<?php echo $c_id;?></a>
这是我删除的方式: 的 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]);
答案 0 :(得分:0)
我刚刚测试了代码并且它有效。我正在运行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);
?>
我刚刚在echo
函数上方添加了一个额外的行unset
语句,在unset
函数下面添加了另一行,以便查看它是否在destroy之前和之后返回任何内容
如果它基本上没有在第一个echo
上返回任何内容或错误,那么这意味着您试图销毁的会话变量甚至不存在销毁无法找到的会话变量是不合适的。
此外,如果它输出错误,但在我添加的echo
的第二行,则表示它基本上已被销毁。
这应该是http://screencast.com/t/sfqw3agXhqe的样子,其中&#34; 1&#34;是$id
变量的输出,以查看它是否被捕获和解析,&#34;会话:有效会话&#34;证明我们试图破坏的会话变量确实存在并且错误和&#34;会话:&#34;重复两次是证明它已被破坏,PHP不再知道输出什么。
另外关于SQL错误,因为其他人已经声明错误是在代码中的另一个地方生成的。