使用购物车中的unset()删除项目会产生mysql错误

时间:2011-11-08 13:03:40

标签: php cart

大家好,这是我在stack overflow.com上的第一篇文章 我正在尝试创建购物车。值存储在二维表中的会话中。第一个值表示数据库中的项目ID,第二个 - 表示项目数量。

foreach($cart_array as $row){
    $sql = "SELECT * FROM prod_table WHERE id=".$row['0']."";
    $cart_result = mysql_query($sql, $conn);
    while ($array = mysql_fetch_array($cart_result)) {
        echo "<tr><td>". $array[manufacturer] . "</td>";
        echo "<td>". $array[model]."</td>";
        echo "<td>".$row['1']."</td>";
        $cart_value = $array[price]*$row['1'];
        //sum and store value of all products
        $total_cart_value += $cart_value;
        echo "<td>&pound;" .$cart_value. "</td>";
        echo "<td><a href='search.php?kick_id=".$row['0']."'>Remove</a></td></tr>";

好的,要删除项目表单购物车用户点击删除然后他被发送回同一页面(由于某种原因,我很难使用$ _SERVER ['PHP_SELF'}与GET方法...) 然后使用unset函数触发代码的不同部分,这将从$ cart_array中删除一对值。

if(isset($_GET['kick_id'])) {
    $t = count($cart_array);
    for( $u = 0; $u < $t; $u++){
        if ($cart_array[$u]['0'] == $_GET['kick_id']){
            unset($cart_array[$u]['0']);
            unset($cart_array[$u]['1']);
            echo " Item has been removed from your cart";
            $cart_array = array_values($cart_array); 

它实际上删除了一对值,但现在不是顺利运行而是显示错误消息: 警告:mysql_fetch_array():提供的参数不是有效的MySQL结果资源... 我假设会话数组中必须存在一些删除值的“跟踪”,这会导致错误。 如何修复代码? 是否还有其他方法/方法来删除值?

4 个答案:

答案 0 :(得分:1)

您似乎没有unset($cart_array[$u]),只包含它包含的两个键。不要忘记取消设置$cart_array[$u]['0']'1',只需取消设置$cart_array[$u]

答案 1 :(得分:0)

有两种方法可以解决这个问题:

1)在你的第一部分:

foreach($cart_array as $row){
  if(empty($row[0])
    continue;
  $sql = "SELECT * FROM prod_table WHERE id=".$row['0']."";
  [...]

2)当你删除项目时,而不是取消设置($ cart_array [$ u] ['0']);你为什么不取消($ cart_array [$ u]); ?

答案 2 :(得分:0)

可能这个

while ($array = mysql_fetch_array($cart_result)) {

造成了这个问题。基于您看到的错误。在尝试获取结果之前,检查

是否有任何结果可用
if(mysql_num_rows($cart_result)>0){
  while ($array = mysql_fetch_array($cart_result)) {
//rest code here
}

答案 3 :(得分:0)

  

我认为......

这就是你做错了。
程序员不应该“假设”。程序员可以(并且应该)确定 假设将导致您误入歧途并浪费您的时间(以及其他人提问时的时间)。

因此,您必须执行一些调试 - 调查以查找问题的实际原因supplied argument is not a valid MySQL result resource错误表示查询中存在错误。所以,你必须看看它是什么错误。因此,以允许您查看发生的任何错误的方式运行所有yoiur查询。最简单的方法是

$cart_result = mysql_query($sql, $conn) or trigger_error(mysql_error()." in ".$sql);

再次运行您的代码 你会在他们通常的位置找到一个sql错误 - 一个屏幕或一个日志文件。

如果您无法理解错误的含义并自行更正代码 - 是时候提出问题了。一些直接的问题,而不是某些假设中的模糊问题。疑难杂症?