看板 PHP 關於我們 聯絡資訊
各位先進好,小弟遇到一個百思不解的問題 發出來想與各位先進請益 下面是一段我寫的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
mrbigmouth:$bill_number跟$bill_date最好做mysql_escape_string處 05/26 10:28
mrbigmouth:裡 這樣試試? 05/26 10:28
mrbigmouth:如果你的apache沒開magic_quotes 所有mysql字串都要記 05/26 10:30
mrbigmouth:得處理 如果有開 那沒經過server處理的字串也要記得補 05/26 10:31
mrbigmouth:上處理 比如說本例中的$bill_number是從資料庫取出的字 05/26 10:32
milua:謝謝樓上 我把我的做法編輯一下~ 05/26 10:32
mrbigmouth:串...裡面如果含有mysql特殊字元就會產生錯誤 05/26 10:32
milua:我昨天也有試過$sql4=sprint("xxxxx '%s'),mysql_escape_str 05/26 10:33
milua:ing處理 還是一樣的結果 05/26 10:33
milua:不過我會再試試看:) 謝謝 05/26 10:34
milua:解決了~變數都先trim乾淨 05/29 09:37