簡體   English   中英

用foreach行分隔mysqli結果

[英]Separate mysqli results with foreach rows

好的,所以我目前正在嘗試設置一個腳本,該腳本將在每月的1日作為cron作業運行。

它用於我正在構建的物業管理系統。 每個屬性的費用都存儲在MySQL數據庫中。

我需要的是腳本要遍歷每個塊並找到單個費用,然后將它們創建為單個發票條目。 這有點漫長,但對我們有用。

更新的代碼:

    <?php

    require_once("lib/common.php");

    $sql = "SELECT id,service_charge,utility_charge,ground_rent,insurance,communalcleaning,maintenance FROM blocks GROUP BY id";

    $rs = $conn->query($sql);

    while($r = $rs->fetch_assoc()){

     foreach($r as $key=>$value) {
      $blkid = $r['id'];
      $invid = time();
      $date = date('Y-m-d');
      switch($key) {
        case "service_charge":
            $type = "Service Charge";
            break;
        case "utility_charge":
            $type = "Utility Charge";
            break;
        case "ground_rent":
            $type = "Ground Rent";
            break;
        case "insurance":
            $type = "Insurance";
            break;
        case "communalcleaning":
            $type = "Communal Cleaning";
            break;
        case "maintenance":
            $type = "Maintenance";
            $ins2 = "INSERT INTO incomings (id,block_id,amount,date) VALUES ('','$blkid','$value','$date')";
            $conn->query($ins2);
            break;
    }

    $ins = "INSERT INTO invoices(id,invoice_id,block_id,entry_description,entry_amount,entry_date) VALUES('','$invid','$blkid','$type','$value','$date')";
    $conn->query($ins);
   }
}

?>

**編輯**

好的,所以我現在將代碼編輯為更加明智的解決方案。 問題仍然存在,我需要為從blocks表中提取的每個“ block_id”創建新的$invid

當前為兩個塊產生相同的$invid 它將按預期分隔所有$key=>$value ,只是不分割發票。

我希望我已經解釋得足夠好了! 如有任何疑問,請務必提出!

提前致謝。

您正在將$invid設置$invid time() ,它精確到秒。 計算機比這快得多,因此$invid將在循環中重復設置為相同的數字。 通常的方法是在MySQL中使用自動遞增列,因此它將自行處理為id列插入遞增數字。 固定表格的方法如下:

ALTER TABLE `invoices` CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT;

之后,調整您的PHP代碼,使其甚至不嘗試為id插入值。 刪除$invid變量,然后從INSERT語句的列和值列表中除去id列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM