亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當參數作為整數傳遞時,Laravel 返回零而不是實際的單元格值

當參數作為整數傳遞時,Laravel 返回零而不是實際的單元格值

PHP
元芳怎么了 2023-03-04 10:48:33
我有一個來自 MariaDB 視圖的非常簡單的查詢:SELECT c.amount, c.discount FROM factors_view as cWHERE c.factor_id = 358當我在 HeidiSQL 中運行這個查詢時,我得到了這個結果:amount = 16000, discount = 1200但是在 Laravel 5.7 原始查詢中$result = \DB::select("   SELECT c.amount,c.discount    FROM factors_view as c   WHERE c.factor_id = 358");結果:amount = 16000, discount = 0當我將參數放在引號之間時:$result = \DB::select("   SELECT c.amount,c.discount    FROM factors_view as c   WHERE c.factor_id = '358'");結果:amount = 16000, discount = 1200c.factor_id 的類型是int(10) unsigned。這對我來說很奇怪;因為區別在于查詢條件,而不是選擇!輸出是在特定列上具有零值的同一行!有誰知道發生了什么事?這是我對這兩個查詢的查詢日志:1)query:"select `c`.`amount`, `c`.`discount` from `factors_view` as `c` where `c`.`factor_id` = ?"bindings:[0:358]2)query:"select `c`.`amount`, `c`.`discount` from `factors_view` as `c` where `c`.`factor_id` = ?"bindings:[0:"358"]
查看完整描述

2 回答

?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

最后,我找到了這個麻煩錯誤的原因。為了更正錯誤,我在視圖中更改了 factor_id 的類型:

CAST(factor_id AS UNSIGNED) AS factor_id

它工作正常。

雖然錯誤已修復,但我仍然沒有意識到這種行為。where 條件必須影響行,而不是單元格的值。這可能是一個學說/dbal 錯誤?!


查看完整回答
反對 回復 2023-03-04
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

請提供SHOW CREATE TABLE。


我想那factor_id是VARCHAR應該的時候INT。


int_col = 123     -- can use index

int_col = '123'   -- can use index

char_col = 123    -- 123 dominates; must check all rows, converting char_col to int

char_col = '123'  -- can use index


查看完整回答
反對 回復 2023-03-04
  • 2 回答
  • 0 關注
  • 114 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號