作者milua (milua)
看板PHP
标题[请益] utf-8在sql加料?
时间Thu May 26 09:33:34 2011
各位先进好,小弟遇到一个百思不解的问题
发出来想与各位先进请益
下面是一段我写的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
1F:推 mrbigmouth:$bill_number跟$bill_date最好做mysql_escape_string处 05/26 10:28
2F:→ mrbigmouth:里 这样试试? 05/26 10:28
3F:→ mrbigmouth:如果你的apache没开magic_quotes 所有mysql字串都要记 05/26 10:30
4F:→ mrbigmouth:得处理 如果有开 那没经过server处理的字串也要记得补 05/26 10:31
5F:→ mrbigmouth:上处理 比如说本例中的$bill_number是从资料库取出的字 05/26 10:32
6F:→ milua:谢谢楼上 我把我的做法编辑一下~ 05/26 10:32
7F:→ mrbigmouth:串...里面如果含有mysql特殊字元就会产生错误 05/26 10:32
8F:→ milua:我昨天也有试过$sql4=sprint("xxxxx '%s'),mysql_escape_str 05/26 10:33
9F:→ milua:ing处理 还是一样的结果 05/26 10:33
10F:→ milua:不过我会再试试看:) 谢谢 05/26 10:34
11F:→ milua:解决了~变数都先trim乾净 05/29 09:37