제품에 일괄 할인 가격을 업데이트/추가하는 데 사용되는 PHP 함수가 있습니다.foreach 내의 else 문에서 오류가 발생하는 경우
이 코드는 내가 선택 문에서 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."'");
}
}
무엇이 여기에 있습니까? 나는 포럼 & google etc를 찾고 있었고, 오후 내내 여러 가지 일을 시도해 보았다. 누구든지 도와주세요!
이 : 다음은
"치명적인 오류 : 소진 134,217,728 바이트의 허용 메모리 크기 (32 바이트를 할당하려고)"
의 index.php에 오류보고를 추가 한 후 드디어 단서를 얻었다 의견에 따라 약간의 변경 기능에 대한 전체 코드, 나는 모든 메모리 희망 누군가가 도움을 줄 수까지 사용할 이유를 전혀 몰라 : 내가 찾는에서 상상할 수
<?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."'");
}
}
}
}
?>
오류보고 기능을 켭니다. –
빈 화면 = 문제가 발생하여 오류보고/표시가 꺼져 있습니다. 켜고 서버 로그를 확인하십시오. 수학을 간단하게'$ new_price = $ result [ 'cost'] * 1.4' 또는'* 1.325'로 단순화 할 수 있습니다. –
$ user_group이 15이고 $ percent가 0이라고 확신합니까?if 조건이 true인지 확인하기 위해 echo hello를 넣을 수 있습니까? – donlaur