[问题] 请问PHP MySQL要如何查询反斜线(\)符号?

楼主: banana2014 (香蕉共和国)   2015-06-13 11:17:42
$search="\\";
$link=mysql_connect("localhost","xxx","ooo");
mysql_select_db("xxx",$link);
$str="select xxx from ooo where xxx like '%$search%'";
$list=mysql_query($str,$link);
while(list($xxx)=mysql_fetch_row($list)){
echo $xxx."<br>";
}
mysql_close($link);
...
像上面我要查询字段xxx中含有反斜线(\)的所有资料并全部提取出来,但是查询出来的结
果却是空无一物,但明明xxx字段有含有反斜线(\)的资料,这是为什么呢?
*从资料表ooo提取字段xxx所有含“反斜线(\)”的资料,其中MySQL的帐号是xxx、密码是
ooo、数据库名称是xxx
作者: MOONRAKER (㊣牛鹤鳗毛人)   2015-06-13 12:39:00
http://goo.gl/M1UZL6写两次不够,你要写四次,跟Java一样另外(1)mysql_*系列已经作古了。(2)如果还非用mysql_*系列,起码*_real_escape_string()用一下。
楼主: banana2014 (香蕉共和国)   2015-06-13 12:52:00
TO MOONRAKER:但是我写四次反斜线它会跑出一些不相关的资料出来,而并非所有含有反斜线的资料都会被列出来这就是奇怪的一点您给的页面有人提议用“ESCAPE '|'”的方法来避免这种反斜线问题的发生,不过这样就变成说“|”也有问题了这只是把问题移转给另一个符号而已,并不会把该问题彻底解决,所以有无更好的方法能解决这个“MySQL反斜线问题”呢? 谢谢
作者: MOONRAKER (㊣牛鹤鳗毛人)   2015-06-13 13:25:00
……我觉得你先加那个mysql_real_escape_string()然后再试… 一个\到四个\都试一试…
作者: wotupset (wotupset)   2015-06-13 14:40:00
会叫出有%的资料 应该是你查询打错了 像是:"%\\%%"列出的资料都是含有%
楼主: banana2014 (香蕉共和国)   2015-06-13 14:46:00
没有喔 我是打"%\\\\%" 像这样喔 但是很奇怪的就是我不管照你们的方式怎么打(包括加mysql_real_escape_str它依旧跑出一样的结果 很奇怪
作者: Darkland (小黑XDrz)   2015-06-13 18:40:00
"\\\\" 不加 real_escape ,或 "\\" 加 real_escape不然就开 client tool 直接去 db 下 query 下到满意再回来看怎么用 PHP 组出要的 query 阿
作者: xxxzzz (...)   2015-06-14 04:47:00
$search="\\"; => PHP结果 => 字串 \'%$search%'; => MySQL接收到 '%\%'=> 找前面任意字符,且结尾是 % 的资料 => 所以找不到同理,$search="\\\\"; 传给MySQL是 '%\\%';总之,\ 同时是PHP和MySQL的特殊字符
楼主: banana2014 (香蕉共和国)   2015-06-14 12:02:00
TO xxxzzz:照理来讲$search="\\\\"传给MySQL的搜寻条件是找中间是反斜线、前后是任意字符的资料,但是我输入$search="\\\\"后(在没有加mysql_real_escape_str时),它的搜寻结果竟然跟$search="\\"的结果是一样的,都是那两笔含有“%”符号的资料,总不可能MySQL是从后面读取字串的吧... 不然怎么又会把它理解成前面任意字符、后面一杠反斜线加“%”的符号呢? (其实这样也不应该显示出任何结果的,因为根本没有资料的末端两字元会是一杠反斜线加“%”符号,所以这才是我觉得非常奇怪的一点)。
作者: wotupset (wotupset)   2015-06-14 13:08:00
你跑数据库是用什么? 免费空间吗?
楼主: banana2014 (香蕉共和国)   2015-06-14 15:23:00
MySQL 租虚拟主机不晓得各位试试后有没有问题

Links booklink

Contact Us: admin [ a t ] ucptt.com