Php 购物车不显示产品,intval?
我正在创建一个链接到SQL数据库的PHP购物车,这是我下面的一个教程 下面的代码应该显示我的所有产品,但是我相信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
$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值