开发者

PHP MySQL Error when inserting into database

Hey there. When I use the following function:

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;
}

I will occassionally get an error which looks like this:

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/ho开发者_StackOverflowme/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

BUT ONLY EVERY NOW AND THEN. I have no idea why it only happens on occasion.

Also, the mysql_open() function is defined here:

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

Where HOST, USEr... etc are defined in a separate file.

The $id that is passed in is straight from the page and I've checked it. The $order_items is pass in through:

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;
}

and the $products are passed in through:

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;
}

In case it's relevant, the database looks like this:

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;

Basically what I'm trying to do is subtract the quantity from the current stock as well as adding the quantity to the sold stock. However this isn't quite working and every now and then I'll get the error described above. But the strange thing is that I'll call the function several times with no problem.

Thanks in advance, JheeBz


Just replace this function, this might work.

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;
}


You need to select the field product_id from the database within the function get_order_items. (p.product_id).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜