[請益] utf-8在sql加料?

看板PHP作者 (milua)時間14年前 (2011/05/26 09:33), 編輯推噓1(1010)
留言11則, 2人參與, 最新討論串1/1
各位先進好,小弟遇到一個百思不解的問題 發出來想與各位先進請益 下面是一段我寫的sql 看似非常普通 $sql2 = "SELECT bill_number,bill_kind FROM bill_common where department_id=$department_id order by bill_id"; $result2 = mysql_query($sql2,$link); $total2= mysql_num_rows($result2); for($i=0;$i<$count;$i++){ $bill_number = mysql_result($result2,$i,0); $bill_kind=mysql_result($result2,$i,1); $sql4="select * from bill where bill_date like '%$bill_date%' and bill_number='$bill_number' and bill_state=2"; $result4 = mysql_query($sql4,$link); $total4= mysql_num_rows($result4); } 神奇的事情發生了,在跑迴圈的過程中,$sql4的語法除了第一次迴圈query會失敗之外 其餘迴圈處理的都會query成功 我把$sql4 echo出來貼到phpmyadmin裡面去看,它是寫 截圖 : http://ppt.cc/m-~c #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ïSELECT * from bill where bill_date like '%2011-05-26%' AND bill_number='D01-1' at line 1 看起來應該是unicode造成的亂碼 不過我試過 $sql4=trim($sql4); 也還是無解,整個站兩三百條sql就這麼一條會出問題 實在是沒有遇過這樣的狀況 煩請各為先進給予指教 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.126.202.170

05/26 10:28, , 1F
$bill_number跟$bill_date最好做mysql_escape_string處
05/26 10:28, 1F

05/26 10:28, , 2F
裡 這樣試試?
05/26 10:28, 2F

05/26 10:30, , 3F
如果你的apache沒開magic_quotes 所有mysql字串都要記
05/26 10:30, 3F

05/26 10:31, , 4F
得處理 如果有開 那沒經過server處理的字串也要記得補
05/26 10:31, 4F

05/26 10:32, , 5F
上處理 比如說本例中的$bill_number是從資料庫取出的字
05/26 10:32, 5F

05/26 10:32, , 6F
謝謝樓上 我把我的做法編輯一下~
05/26 10:32, 6F

05/26 10:32, , 7F
串...裡面如果含有mysql特殊字元就會產生錯誤
05/26 10:32, 7F

05/26 10:33, , 8F
我昨天也有試過$sql4=sprint("xxxxx '%s'),mysql_escape_str
05/26 10:33, 8F

05/26 10:33, , 9F
ing處理 還是一樣的結果
05/26 10:33, 9F

05/26 10:34, , 10F
不過我會再試試看:) 謝謝
05/26 10:34, 10F

05/29 09:37, , 11F
解決了~變數都先trim乾淨
05/29 09:37, 11F
文章代碼(AID): #1DtQtmZL (PHP)
文章代碼(AID): #1DtQtmZL (PHP)