PHP高手們,幫我解決一個問題吧:
在php裡定義了一條sql如下:
$sql = "SELECT * FROM p_info pi LEFT JOIN job j ON j.id = " . $id .
"WHERE pi.requestid = 0
AND ((ifnull(pi.standard_20_ft_container, 0) - ifnull(j.standard_20_ft_container, 0)) <= 0)
AND ((ifnull(pi.standard_40_ft_container, 0) - ifnull(j.standard_40_ft_container, 0)) <= 0)
AND ((ifnull(pi.high_cube_40_ft_container, 0) - ifnull(j.high_cube_40_ft_container, 0)) <= 0)
AND ((ifnull(pi.capacity_head_of_cattle, 0) - ifnull(j.capacity_head_of_cattle, 0)) <= 0)
AND ((ifnull(pi.capacity_head_of_sheep, 0) - ifnull(j.capacity_head_of_sheep, 0)) <= 0)
AND ((ifnull(pi.capacity_other_livestock, 0) - ifnull(j.capacity_other_livestock, 0)) <= 0)
AND ((ifnull(pi.capacity_number_of_horses, 0) - ifnull(j.capacity_number_of_horses, 0)) <= 0)
AND ((ifnull(pi.grain_feed_kg, 0) - ifnull(j.carrying_capacity_kg, 0)) <= 0)
AND ((ifnull(pi.length_cm, 0) - ifnull(j.tray_length_cm, 0)) <= 0)
AND ((ifnull(pi.width_cm, 0) - ifnull(j.tray_width_cm, 0)) <= 0)
AND ((ifnull(pi.height_cm, 0) - ifnull(j.max_load_height_cm, 0)) <= 0)
AND ((ifnull(pi.weight_kg, 0) - ifnull(j.carrying_capacity_kg, 0)) <= 0)
AND to_days(j.home_day1) <= to_days(str_to_date(pi.date1, '%d/%m/%Y'))
AND to_days(str_to_date(pi.date2, '%d/%m/%Y')) <= to_days(j.home_day2)
但是查詢出的資料為空白,調式時發現,傳到$query = mysql_query ( $sql );這裡的sql語句變成這樣了:
SELECT * FROM p_info pi LEFT JOIN job j ON j.id = 734WHERE pi.requestid = 0
AND ((ifnull(pi.standard_20_ft_container, 0) - ifnull(j.standard_20_ft_container, 0)) <= 0)
AND ((ifnull(pi.standard_40_ft_container, 0) - ifnull(j.standard_40_ft_container, 0)) <= 0)
AND ((ifnull(pi.high_cube_40_ft_container, 0) - ifnull(j.high_cube_40_ft_container, 0)) <= 0)
AND ((ifnull(pi.capacity_head_of_cattle, 0) - ifnull(j.capacity_head_of_cattle, 0)) <= 0)
AND ((ifnull(pi.capacity_head_of_sheep, 0) - ifnull(j.capacity_head_of_sheep, 0)) <= 0)
AND ((ifnull(pi.capacity_other_livestock, 0) - ifnull(j.capacity_other_livestock, 0)) <= 0)
AND ((ifnull(pi.capacity_number_of_horses, 0) - ifnull(j.capacity_number_of_horses, 0)) <= 0)
AND ((ifnull(pi.grain_feed_kg, 0) - ifnull(j.carrying_capacity_kg, 0)) <= 0)
AND ((ifnull(pi.length_cm, 0) - ifnull(j.tray_length_cm, 0)) <= 0)
AND ((ifnull(pi.width_cm, 0) - ifnull(j.tray_width_cm, 0)) <= 0)
AND ((ifnull(pi.height_cm, 0) - ifnull(
貌似後面的就被截斷了,資料庫裡運行這個sql是沒問題的。但是在這裡就有問題,怎麼辦呢?大家有遇到這樣問題嗎?
回複討論(解決方案)
額。。。沒見這麼長的 sql 你牛 。。。
不就一千多點,應該不會有問題的,可能是你粘錯了
建議:
1、數值欄位不要 NULL 而是 NOT NULL
2、用這個查詢建立一個視圖
額。。。沒見這麼長的 sql 你牛 。。。
這個不是長啊,你看都是廢話,因為資料庫不合理,所以我得這麼寫啊。
不就一千多點,應該不會有問題的,可能是你粘錯了
建議:
1、數值欄位不要 NULL 而是 NOT NULL
2、用這個查詢建立一個視圖
我可是在調試時發現穿進去的字串不完整啊。這是什麼原因呢。是該設定成not null, 但是我是修bug,不能改資料庫啊。等我試試視圖吧。
不會無緣無故的被截斷的,自己仔細調試一下。
額。。。沒見這麼長的 sql 你牛 。。。
這個不是長啊,你看都是廢話,因為資料庫不合理,所以我得這麼寫啊。
好吧,var_dump輸出的字元是有限的,你是echo出來的吧,檢查哈是不是這兩個符號 " ‘ 拼接沒對
不就一千多點,應該不會有問題的,可能是你粘錯了
建議:
1、數值欄位不要 NULL 而是 NOT NULL
2、用這個查詢建立一個視圖
我可是在調試時發現穿進去的字串不完整啊。這是什麼原因呢。是該設定成not null, 但是我是修bug,不能改資料庫啊。等我試試視圖吧。
我定義個一字串變數,賦了一個 sql語句,長度超過1024了。取不全值。哪裡可以改進是這個問題,你看看這個連結,有人跟我同樣的問題:
http://bbs.phpchina.com/thread-163748-1-1.html
不會無緣無故的被截斷的,自己仔細調試一下。
這個就是調試的結果啊。前面是定義一個sql語句,結果傳到query()裡面就變成後面這樣,被截取了,只剩1024個字元。
額。。。沒見這麼長的 sql 你牛 。。。
這個不是長啊,你看都是廢話,因為資料庫不合理,所以我得這麼寫啊。
好吧,var_dump輸出的字元是有限的,你是echo出來的吧,檢查哈是不是這兩個符號 " ‘ 拼接沒對
不是,不是,那裡就是定義了一個sql語句,然後拼接了一個ID,後面是調試時發現那個sql被截取了只剩1024了。
掃第一眼的時候居然沒發現中間插了一句中文...
有人跟我同樣的問題:http://bbs.phpchina.com/thread-163748-1-1.html
但那個人不是已經說了: 已解決。xdeubg的bug。不影響程式。嗎?
你是否也是這樣呢?
掃第一眼的時候居然沒發現中間插了一句中文...
好吧,是我排版不給力,導致你沒看到。
有人跟我同樣的問題:http://bbs.phpchina.com/thread-163748-1-1.html
但那個人不是已經說了: 已解決。xdeubg的bug。不影響程式。嗎?
你是否也是這樣呢?
我把xdebug的配置在php.ini裡注釋了之後還是不行哎。
就是說,你還是曾使用了 xdebug 的對吧?
php 並不會限制查詢串的長度,這一點可從:將一篇文章通過 insert 指令插入到表中,來映證
額。。。沒見這麼長的 sql 你牛 。。。
這個不是長啊,你看都是廢話,因為資料庫不合理,所以我得這麼寫啊。
好吧,var_dump輸出的字元是有限的,你是echo出來的吧,檢查哈是不是這兩個符號 " ‘ 拼接沒對
不是,不是,那裡就是定義了一個sql語句,然後拼接了一個ID,後面是調試時發現那個sql被截取了只剩1024了。
xdubug var_dump 會自動截斷 ,不知道echo會不會 ,關了xdebug試試
就是說,你還是曾使用了 xdebug 的對吧?
php 並不會限制查詢串的長度,這一點可從:將一篇文章通過 insert 指令插入到表中,來映證
是的哎,曾使用debug調試,但是在php.ini裡把調試的配置注釋了之後還是不行。
你是查詢出來為空白還是返回SQL語句錯誤?你前面說是查出來為空白,但截斷的SQL應該會報錯的,不是應該先確定這一點嗎?
LZ是不是 echo 的時候,就剩下這點了??
如果是的話,建議你把這條語句,寫到一個表裡面。
你是查詢出來為空白還是返回SQL語句錯誤?你前面說是查出來為空白,但截斷的SQL應該會報錯的,不是應該先確定這一點嗎?
嗨,謝謝啊。這裡是查出來為空白。但是同樣的查詢語句查出來是有結果集的。我也覺得它應該會報錯。但是我對php不太瞭解。而且先前的SQL語句在程式裡查詢是有結果的。可是到navicat下面查詢就報錯了。所有這也讓我很疑惑。
LZ是不是 echo 的時候,就剩下這點了??
如果是的話,建議你把這條語句,寫到一個表裡面。
你的意思是什麼呢?怎麼寫到一個表裡呢?
我知道了,這裡是xdebug的bug,調式時只能顯示1024位元組,但是你把那個sql語句輸出的話是全部都有的。