製品の割引価格を一括で更新/追加するために使用されるphp関数があります。
select ステートメントに p.sku を追加した sku に $new_price 条件と substr チェックを追加するまで、コードは完全に機能しました。
空白の画面が表示され、実行しようとしてもクエリが実行されません。
if ($user_group == 15 && $percent == 0) {
$this->db->query("DELETE FROM " . DB_PREFIX . "product_discount WHERE customer_group_id = '".$user_group."' AND quantity = '".$quantity."'");
$query = $this->db->query("SELECT p.product_id, p.sku, p.cost, p.price FROM product p");
foreach ($query->rows as $result) {
if ((substr($result['sku'],0,3) == 'ACA')) {
$new_price = ($result['cost'] * 32.5 / 100 + $result['cost']);
} else {
$new_price = ($result['cost'] * 40 / 100 + $result['cost']);
}
$this->db->query("INSERT INTO " . DB_PREFIX . "product_discount SET
`product_id` = '" . $result['product_id'] . "',
`customer_group_id` = '15',
`quantity` = '".$quantity."',
`priority` = '".$priority."',
`price` = '".$new_price."',
`date_start` = '".$start_date."',
`date_end` = '".$expire_date."'");
}
}
ここで何が欠けていますか?私はフォーラムやグーグルなどを検索し、午後中ずっといろいろなことを試してきましたが、うんざりしています! 誰か助けてください!
index.php にエラー報告を追加した後、私はついに手がかりを得ました:
「致命的なエラー: 134217728 バイトの許容メモリサイズが使い果たされました (32 バイトを割り当てようとしました)」
コメントに基づいていくつかの小さな変更を加えた関数の完全なコードを次に示します。すべてのメモリが使い果たされる理由がわかりません。誰かが助けてくれることを願っています。
<?php
class ModelBulkDiscount extends Model {
public function updateDiscount($user_group = null, $percent = 0, $quantity = 1, $priority = 0, $start_date = null, $expire_date = null) {
if($user_group != 15 && $percent > 0) {
$this->db->query("DELETE FROM " . DB_PREFIX . "product_discount WHERE customer_group_id = '".$user_group."' AND quantity = '".$quantity."'");
$query = $this->db->query("SELECT p.product_id, p.price FROM " . DB_PREFIX . "product p");
foreach ($query->rows as $result) {
$new_price = $result['price'] - (($result['price'] / 100) * $percent);
$this->db->query("INSERT INTO " . DB_PREFIX . "product_discount SET
`product_id` = '" . $result['product_id'] . "',
`customer_group_id` = '" . $user_group . "',
`quantity` = '".$quantity."',
`priority` = '".$priority."',
`price` = '".$new_price."',
`date_start` = '".$start_date."',
`date_end` = '".$expire_date."'");
}
} else if ($user_group == 15 && $percent == 0) {
$this->db->query("DELETE FROM " . DB_PREFIX . "product_discount WHERE customer_group_id = '".$user_group."' AND quantity = '".$quantity."'");
$query = $this->db->query("SELECT p.product_id, p.sku, p.cost, p.price FROM " . DB_PREFIX . "product p");
foreach ($query->rows as $result) {
if ((substr($result['sku'],0,3) == 'ACA')) {
$new_price = ($result['cost'] * 1.325);
} else {
$new_price = ($result['cost'] * 1.4);
}
$this->db->query("INSERT INTO " . DB_PREFIX . "product_discount SET
`product_id` = '" . $result['product_id'] . "',
`customer_group_id` = '15',
`quantity` = '".$quantity."',
`priority` = '".$priority."',
`price` = '".$new_price."',
`date_start` = '".$start_date."',
`date_end` = '".$expire_date."'");
}
} else if ($user_group == 15 && $percent > 0) {
$this->db->query("DELETE FROM " . DB_PREFIX . "product_discount WHERE customer_group_id = '".$user_group."' AND quantity = '".$quantity."'");
$query = $this->db->query("SELECT p.product_id, p.cost, p.price FROM " . DB_PREFIX . "product p");
foreach ($query->rows as $result) {
$temp_price = ($result['cost'] * 1.325);
$new_price = $temp_price - (($temp_price / 100) * $percent);
$this->db->query("INSERT INTO " . DB_PREFIX . "product_discount SET
`product_id` = '" . $result['product_id'] . "',
`customer_group_id` = '15',
`quantity` = '".$quantity."',
`priority` = '".$priority."',
`price` = '".$new_price."',
`date_start` = '".$start_date."',
`date_end` = '".$expire_date."'");
}
}
}
}
?>