簡體   English   中英

NULL MAX(col) 值,即使 DB 有有效記錄

[英]NULL MAX(col) value even though DB has a valid record

所以我試圖提取本年度的最大 invoiceNo,這就是我使用 PDO 實現它的方式:

$sql = 'SELECT MAX(invoiceNo) AS invoiceId FROM invoices WHERE invoiceDate BETWEEN :yearStart AND :yearEnd HAVING invoiceId IS NOT NULL';
        if($stmt = $pdo1->prepare($sql)){
            $year = date("Y")."-01-01";
            $stmt->bindParam(":yearStart", $year);
            $year = date("Y")."-12-31";
            $stmt->bindParam(":yearEnd", $year);
            if($stmt->execute()){
                if($stmt->rowCount() == 1){
                    $row = $stmt->fetch(PDO::FETCH_ASSOC);
                    $invoiceNo = $row['invoiceId'];
                    $response = date("Y").strval(++$invoiceNo);
                }
                else{
                    $response = date("Y")."-0";
                }
            }
        }

但是, $response 不斷被分配給 else 子句: 在此處輸入圖像描述 .

這就是我的數據庫的樣子: 在此處輸入圖像描述

因此,我預計 $response 將是 2022-2。

我認為我的 SQL 查詢有問題,對此我深表歉意,仍在學習中!

$sql = "SELECT MAX(arbitInvoiceNo) AS invoiceId FROM invoices WHERE invoiceDate BETWEEN :dateStart AND :dateEnd HAVING invoiceId IS NOT NULL";
        if($stmt = $pdo1->prepare($sql)){
            $dateStart = date("Y")."-01-01";
            $stmt->bindParam(":dateStart", $dateStart);
            $dateEnd = date("Y")."-12-31";
            $stmt->bindParam(":dateEnd", $dateEnd);
            if($stmt->execute()){
                if($stmt->rowCount() == 1){
                    $row = $stmt->fetch(PDO::FETCH_ASSOC);
                    $invoiceNo = $row['invoiceId'];
                    $response = date("Y")."-".strval(++$invoiceNo);
                }
                else{
                    $response = date("Y")."-0";
                }
            }
        }

更改了我在 PHP 中命名變量和 SQL 查詢中的占位符的方式。 謝阿迪森的所有幫助!

暫無
暫無

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

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