Php 在简单的add函数中使用会话

Php 在简单的add函数中使用会话,php,mysql,session,shopping-cart,Php,Mysql,Session,Shopping Cart,我目前正在youtube上关注PHP学院的PHP教程,我们正在创建一个购物车。到目前为止,我们使用会话来解释添加的产品。当我尝试回显会话时,它会在第28行的C:\Program Files\wamp\www\Formula One\script\cart.php中产生一个错误:注意:未定义索引:cart\u 1。为什么会这样?在教程视频中,它会将1添加到下一页,当再次单击时,它会转到2。在他们的论坛上,有一些建议可以在之前使用ISSET。非常感谢 <?php session_start(

我目前正在youtube上关注PHP学院的PHP教程,我们正在创建一个购物车。到目前为止,我们使用会话来解释添加的产品。当我尝试回显会话时,它会在第28行的C:\Program Files\wamp\www\Formula One\script\cart.php中产生一个
错误:注意:未定义索引:cart\u 1。为什么会这样?在教程视频中,它会将1添加到下一页,当再次单击时,它会转到2。在他们的论坛上,有一些建议可以在之前使用
ISSET
。非常感谢

 <?php
session_start();

include("../script/dbconnect.php");

$page1 = 'index.php'; //page reference

if (isset($_GET['add'])) { // cart add button
    $_SESSION['cart_'.$_GET['add']]+='1';
}

function products() {
    $get = mysql_query('SELECT id, name, description, price FROM products WHERE quantity > 0 ORDER BY id DESC');
    if (mysql_num_rows($get) ==0) {
    echo"There are no products to display!";
    }
else {
  while ($get_row = mysql_fetch_assoc($get)) {
        echo '<p>'.$get_row['name'].'<br />'.$get_row['description'].'<br />'.$get_row['price'].' <a href="cart.php?add='.$get_row['id'].'">Add Here</a></p>';
        }
    }
}

echo $_SESSION['cart_1'];

?>

在使用可能未定义的变量之前,您应该添加一个检查

if(!isset($_SESSION['cart_'.$_GET['add']])) 
       $_SESSION['cart_'.$_GET['add']] = 0;

$_SESSION['cart_'.$_GET['add']]+='1';

在链接视频中没有显示错误,因为作者的ini php.ini可能设置为
E_ALL&~E_NOTICE

编辑:我现在看到视频了。请尝试查找其他教程,其中:

  • 错误报告设置为
    E\u ALL
  • 使用函数而不是mysql_*

通知告诉您,$\u会话['cart\u 1']未定义。您可以在使用之前检查它,也可以在php.ini中禁用此消息,因为这不是一个严重错误。如果任何教程引用了
mysql\u query
,请将其丢弃。这个接口是上世纪90年代开发的,现已弃用,即将被删除,并将在PHP5.5或更高版本中产生警告。应该使用新的应用程序来避免严重的SQL注入错误。
if(isset($_SESSION['cart_1']))
    echo $_SESSION['cart_1'];
else
    echo "session cart_1 not defined";