【问题标题】:PHP MySQL Error when inserting into database插入数据库时​​出现PHP MySQL错误
【发布时间】:2011-09-04 18:13:18
【问题描述】:

你好。当我使用以下功能时:

function ship_order($id, $order_items, $products)
{
    $connection = mysql_open();

    foreach ($order_items as $order_item)
    {
        foreach ($products as $product)
        {
            if ($order_item['product_id'] == $product['id'])
            {
                if ($order_item['quantity'] > $product['stock'])
                {
                    return false;
                }
            }
        }
    }

    $query = "update SEOrders " .
         "set status='Shipped' " .
         "where id = $id";

    $result = mysql_query($query, $connection) or show_error();

    foreach ($order_items as $order_item)
    {
        foreach ($products as $product)
        {
            if ($order_item['product_id'] == $product['id'])
            {
                $new_stock = $product['stock'] - $order_item['quantity'];
                $sold_stock = $product['sold_stock'] + $order_item['quantity'];

                $query = "update SEProducts " .
                         "set sold_stock= '$sold_stock', stock='$new_stock' " .
                         "where id = $id";

                $result = mysql_query($query, $connection) or show_error();
            }
        }
    }

    mysql_close($connection) or show_error();
    return true;
}

我偶尔会收到如下所示的错误:

Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 176 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 176 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 176 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 176 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 176 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 176 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 176 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 176 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 176 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 176 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 176 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 176 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 176 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 176 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 176 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 176 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 176 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 176 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 176 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 176 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 196 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 196 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 196 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 196 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 196 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 196 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 196 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 196 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 196 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 196 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 196 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 196 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 196 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 196 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 196 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 196 Notice: Undefined index: product_id in /net/home/export/home/public_html/wp/SE/includes/defs.php on line 196 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 196 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 196 Notice: Undefined index: product_id in /net/export/home/public_html/wp/SE/includes/defs.php on line 196 Warning: Cannot modify header information - headers already sent by (output started at /net/export/home/public_html/wp/SE/includes/defs.php:196) in /net/export/home/public_html/wp/SE/ship_order_action.php on line 21

但只是偶尔。我不知道为什么它只是偶尔发生。

另外,这里定义了 mysql_open() 函数:

function mysql_open() 
{
  $connection = @ mysql_connect(HOST, USER, PASSWORD)
      or die("Could not connect");
  mysql_select_db(DATABASE, $connection)
      or show_error();
  return $connection;
}

HOST、USER...等在单独的文件中定义。

传入的 $id 直接来自页面,我已经检查过了。 $order_items 是通过:

function get_order_items($id)
{
    $connection = mysql_open();
    $query = "select oi.order_id, p.name, oi.quantity, p.stock " .
             "from SEOrder_items as oi join SEProducts p on oi.product_id = p.id " .
             "where oi.order_id = $id";
    $result = mysql_query($query, $connection) or show_error();
    mysql_close($connection) or show_error();

    $order_items = array();
    while ($order_item = mysql_fetch_array($result)) 
    {
        $order_items[] = $order_item;
    }

    return $order_items;
}

$products 是通过以下方式传入的:

function get_products()
{
    $connection = mysql_open();
    $query = "SELECT * FROM SEProducts";
    $query .= " order by name asc";
    $result = mysql_query($query, $connection) or show_error();

    $products = array();
    while ($product = mysql_fetch_array($result)) 
    {
        $products[] = $product;
    }

    mysql_close($connection) or show_error();

    return $products;
}

如果相关,数据库如下所示:

create table if not exists SEOrders
(
    id int not null auto_increment primary key,
    name varchar(20) not null,
    address varchar(30) not null,
    status varchar(10) not null,
    dateShipped timestamp
)ENGINE=INNODB;

create table if not exists SEProducts
(
    id int not null auto_increment primary key,
    price double not null,
    name varchar(30) not null,
    stock int not null,
    original_stock int not null,
    sold_stock int not null
)ENGINE=INNODB;

create table if not exists SEOrder_items
(
    id int not null auto_increment primary key,
    order_id int not null,
    foreign key (order_id) references SEOrders(id),
    product_id int not null,
    foreign key (product_id) references SEProducts(id),
    quantity int not null
)ENGINE=INNODB;

基本上我要做的是从当前库存中减去数量,并将数量添加到已售库存中。然而,这并不完全有效,我会时不时地收到上述错误。但奇怪的是,我调用这个函数几次都没问题。

提前致谢, 呸呸呸

【问题讨论】:

    标签: php mysql sql arrays insert


    【解决方案1】:

    只需替换此功能,这可能会起作用。

    function get_order_items($id)
    {
        $connection = mysql_open();
        $query = "select p.id, oi.order_id, p.name, oi.quantity, p.stock, oi.product_id " .
                 "from SEOrder_items as oi join SEProducts p on oi.product_id = p.id " .
                 "where oi.order_id = $id";
        $result = mysql_query($query, $connection) or show_error();
        mysql_close($connection) or show_error();
    
        $order_items = array();
        while ($order_item = mysql_fetch_array($result)) 
        {
            $order_items[] = $order_item;
        }
    
        return $order_items;
    }
    

    【讨论】:

      【解决方案2】:

      您需要从函数get_order_items 内的数据库中选择字段product_id。 (p.product_id)。

      【讨论】:

      • 那么在这种情况下我必须加入吗?我有点讨厌加入。
      • 已经有一个连接:join SEProducts as p。只需在 SELECT 和 FROM 之间添加 p.product_id
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-05
      相关资源
      最近更新 更多