PHPファイルにcronジョブを設定しました。また、cron が実行されたときに電子メール アラートを受信するように電子メールを設定しました。そのため、電子メールの本文に表示されるそのphpファイルにエコーに入れたステートメントは何でも。
私の疑問は、コードの状態をチェックしていないことです。コードを通過するだけで、メール本文にエコーされたステートメントが表示されます。
以下のコードを見てください-:
$query_update = "UPDATE tier_price tp
JOIN catalog_product_entity cpe ON cpe.entity_id = tp.entity_id
AND cpe.name LIKE '$col2' AND website_id = $col4
JOIN customer_group cg ON cg.customer_group_id = tp.customer_group_id AND cg.customer_group_code = $col1 SET cpetp.value = ".$col3.";";
mysql_query($query_update);
$count = mysql_affected_rows();
if($count == 1)
{
echo "<br />"."Price for customer group $col1 for item $col2 is updated to $col3";
}
if($count == 0)
{
$qry_fetch_product = "SELECT entity_id FROM catalog_product_entity WHERE name = '$col2'";
$res_qry_fetch_product = mysql_query($qry_fetch_product);
while($row = mysql_fetch_array($res_qry_fetch_product))
{
$entity_id = $row["entity_id"];
}
$qry_fetch_grp_code = "SELECT customer_group_id FROM customer_group WHERE customer_group_code = $col1 ";
$res_qry_fetch = mysql_query($qry_fetch_grp_code);
while($row = mysql_fetch_array($res_qry_fetch))
{
$customer_group_id = $row["customer_group_id"];
}
$qry_insert_base = "INSERT into tier_price(entity_id,customer_group_id,qty,value,website_id) VALUES ($entity_id,$customer_group_id,1,$col3,$col4)";
$res_qry_insert_base = mysql_query($qry_insert_base);
echo "<br />"."Price $col3 for customer group $col1 for item $col2 is inserted";
}
私が受け取るメールアラートには次が含まれます-:
<br />Price for customer group 101 for item abc is updated to 252<br />Price 252 for customer group 101 for item abc is inserted
<br />Price for customer group 102 for item pqr is updated to 252.49<br />Price 252.49 for customer group 102 for item pqr is inserted
<br />Price for customer group 103 for item xyz is updated to 15.5<br />Price 15.5 for customer group 103 for item xyz is inserted
だから私の疑問は、実際のケースではないはずの両方のループに入るということです。クエリの更新カウントが 1 になるかのように、if($count == 1) ループのみを通過する必要があります。同様に、更新カウントが 0 にならない場合でも、o/p から両方のループで実行されていることがわかります。非常に紛らわしい電子メールアラートの両方の行を参照してください...
誰でもこれを回避する解決策を提供できますか...更新が発生した場合はメールで更新を表示するか、挿入が発生するとコードから挿入ステートメントを表示します..