PHP MySQL Ошибка при вставке в базу данных - PullRequest
0 голосов
/ 30 мая 2011

Привет.Когда я использую следующую функцию:

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 ... и т. Д. Определены в отдельномfile.

Переданный $ 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;
}

, а $ продукты передаются через:

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;

По сути, я пытаюсь вычесть количество из текущего запаса, а также добавить количество к проданному запасу.Однако это не совсем работает, и время от времени я получаю ошибку, описанную выше.Но странно, что я вызову функцию несколько раз без проблем.

Заранее спасибо, JheeBz

Ответы [ 2 ]

0 голосов
/ 17 августа 2011

Просто замените эту функцию, это может сработать.

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;
}
0 голосов
/ 30 мая 2011

Вам необходимо выбрать поле product_id из базы данных в функции get_order_items. (p.product_id).

...