Php 购物车不显示产品,intval?

Php 购物车不显示产品,intval?,php,html,Php,Html,我正在创建一个链接到SQL数据库的PHP购物车,这是我下面的一个教程 下面的代码应该显示我的所有产品,但是我相信 $id = intval($_GET['id']); 部门搞砸了。产品的SKU是Varchar,而不是整数,因此我认为这是导致“intval”问题的原因。我是否可以插入另一个数据类型来再次显示我的产品 <?php if (isset($_GET['action']) && $_GET['action'] == "add") { $id = intva

我正在创建一个链接到SQL数据库的PHP购物车,这是我下面的一个教程

下面的代码应该显示我的所有产品,但是我相信

$id = intval($_GET['id']);
部门搞砸了。产品的SKU是Varchar,而不是整数,因此我认为这是导致“intval”问题的原因。我是否可以插入另一个数据类型来再次显示我的产品

<?php

if (isset($_GET['action']) && $_GET['action'] == "add")
{
    $id = intval($_GET['id']);

    if(isset($_SESSION['cart'][$id]))
    {
        $_SESSION['cart'][$id]['quantity']++;
    } 
    else 
    {
        $sql2   = "SELECT * FROM products WHERE SKU={$id}";
        $query2 = mysql_query($sql2);

        if(mysql_num_rows($query2) != 0)
        {
            $row2 = mysql_fetch_array($query2);
            $_SESSION['cart'][$row2['SKU']] = array("quantity => 1, "price" => $row['price']);

        } 
        else 
        {
            $message = "This product id is invalid";
        }
    }
}
?>
<h2 class="message"><?php if(isset($message)){echo $message; ?></h2>
<h1>Product Page</h1>
<table>
    <tr>
        <th>Name</th>
        <th>Description</th>
        <th>Price</th>
        <th>Action</th>
    </tr>

    <?php
    $sql   = "SELECT * FROM products ORDER BY SKU ASC";
    $query = mysql_query($sql)or die(mysql_error());

    while($row = mysql_fetch_assoc($query))
    {
        ?>
        <tr>
            <td><?php echo $row['name']; ?></td>
            <td><?php echo $row['Description']; ?></td>
            <td><?php echo "£" . $row['price']; ?></td>
            <td><a href="index.php?page=products&action=add&id=<?php echo $row['SKU']; ?>">Add to Cart</a></td>
        </tr>

        <?php
    }
    ?>

</table>

此处缺少结尾引号:

$_SESSION['cart'][$row2['SKU']] = array("quantity" => 1, "price" => $row['price']);
您还缺少一个
}
符号

<h2 class="message"><?php if(isset($message)){echo $message; } ?> </h2>

检查
intval()
,您将看到当变量不是整数时,此方法返回0

如果要搜索此项,只需将行更改为:

$id = $_GET['id'];
以字符串形式获取变量

但是,有两件事需要记住:

  • 如果在代码中处理不当,这可能导致
  • mysql函数已弃用,不应在新代码中使用。。。在这件事上有一个秘密。。。使用或

您应该在PDO或mysqli中使用准备好的语句,而不是在sql语句中注入变量。您有一个语法错误:
“quantity=>1,
必须是
”quantity“=>1,
。您忘记了双引号P对数字和字符串几乎没有区别。这段代码有很多错误。它没有遵循许多现代良好实践。这个教程有点糟糕。老实说,我不能告诉你这段代码是做什么的,它太混乱了。产品ID是整数吗?PHP不关心如何定义列类型,只关心其中的内容。向我们展示您的DB表结构。我知道我的产品ID是test1、test2、test3,但对于任务,它们必须保持为stringsHi,我在数量后添加了报价,但仍然没有显示任何产品。我已将此部分更改为您建议的内容,并再次显示我的产品。但是,它会显示$message“This product id is invalid”您的数据库中有什么?实际上是否有与您的产品匹配的ID?DB仅保存SKU、名称、说明和价格。这3个产品都有sku(test1、test2、test3),您将把什么作为$GET变量传递到页面?我正在尝试传递sku值