MySQL で次の SQL クエリを使用しています。
"SELECT SUBSTRING(invoices.dateCreated, 1, 7) AS month,
account.name AS accountName,
account.id AS accountId,
invoices.invId AS invoiceId,
productType.title AS productTitle,
sum(invoiceItems.cost*invoiceItems.quantity) AS totalValue,
sum(invoiceItems.quantity) AS totalQuantity
FROM account LEFT JOIN invoices ON invoices.accountId = account.id
LEFT JOIN invoiceItems ON invoices.id = invoiceItems.invoiceId
LEFT JOIN productType ON invoiceItems.productTypeId = productType.id
WHERE invoices.statusId != 'S62FD452B1D4'
GROUP BY invoiceItems.productTypeId, invoices.invId
ORDER BY month DESC, accountName ASC, invoices.id ASC
LIMIT ".$start_limit.", ".$records_per_page.";"
これは、クエリを制限するセクションがなくても問題なく機能します。ただし、制限セクションを追加すると、変数$start_limit
に$records_per_page
は値がありませんが、変数の周りの行をジグすると、クエリになります。これは、変数を囲む引用符を に変更した場合にも当てはまります'.$start_limit.'
。ただし、これではクエリが機能しないようです。
私が間違っていることについてのアドバイスや助けをいただければ幸いです。
2 つの変数の値は 100% 確実に渡されます。この例では、開始制限 = 0、終了制限 (ページあたり) = 50 です。確認したところ、50 は制限を大きく下回っています。
問題は、SQL エラーのポップアップが表示されると、次のように表示されることです。
SELECT SUBSTRING(invoices.dateCreated, 1, 7) AS month,
account.name AS accountName,
account.id AS accountId,
invoices.invId AS invoiceId,
productType.title AS productTitle,
sum(invoiceItems.cost*invoiceItems.quantity) AS totalValue,
sum(invoiceItems.quantity) AS totalQuantity
FROM account LEFT JOIN invoices ON invoices.accountId = account.id
LEFT JOIN invoiceItems ON invoices.id = invoiceItems.invoiceId
LEFT JOIN productType ON invoiceItems.productTypeId = productType.id
WHERE invoices.statusId != 'S62FD452B1D4'
GROUP BY invoiceItems.productTypeId, invoices.invId
ORDER BY month DESC, accountName ASC, invoices.id ASC
LIMIT , ;
そして、変数がそこにあるかどうかを確認するために物事を変更すると、次のようになります。
SELECT SUBSTRING(invoices.dateCreated, 1, 7) AS month,
account.name AS accountName,
account.id AS accountId,
invoices.invId AS invoiceId,
productType.title AS productTitle,
sum(invoiceItems.cost*invoiceItems.quantity) AS totalValue,
sum(invoiceItems.quantity) AS totalQuantity
FROM account LEFT JOIN invoices ON invoices.accountId = account.id
LEFT JOIN invoiceItems ON invoices.id = invoiceItems.invoiceId
LEFT JOIN productType ON invoiceItems.productTypeId = productType.id
WHERE invoices.statusId != 'S62FD452B1D4'
GROUP BY invoiceItems.productTypeId, invoices.invId
ORDER BY month DESC, accountName ASC, invoices.id ASC
LIMIT '.0.', '.50.' ;
これらの値はどちらもユーザーが指定するものではありません。それはあまり問題ではありません。同じことをうまくやっている100の同様の1からのこの1つのクエリで、変数が異常に動作している理由がわかりません。これの唯一の違いは、グループ化と順序付けの数です。これは違いを生むでしょうか?