Invalid parameter number
和許多網友遇到的問題一樣,sql放在數據庫執行就可以,但是拉到代碼里,用Db:query(sql,param)這個方法就出問題。
每個參數調試過以后,發現是由於有兩個參數,每個參數有用到兩次,導致了沖突。修改參數以后,重復賦值,問題解決。
LEFT JOIN ( SELECT * FROM `order` WHERE MONTH ( create_time ) = :m AND YEAR ( create_time ) = :y ) o ON t.id = o.tableID LEFT JOIN ( SELECT * FROM `order` WHERE MONTH ( create_time ) = :m AND YEAR ( create_time ) = :y AND state = :s ) ro ON t.id = ro.tableID
就是這個代碼里的:m和:y用了兩次導致的問題。
LEFT JOIN ( SELECT * FROM `order` WHERE MONTH ( create_time ) = :m1 AND YEAR ( create_time ) = :y1 ) o ON t.id = o.tableID LEFT JOIN ( SELECT * FROM `order` WHERE MONTH ( create_time ) = :m2 AND YEAR ( create_time ) = :y2 AND state = :s ) ro ON t.id = ro.tableID
修改參數后,問題解決
