PHP 板


LINE

看板 PHP  RSS
$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 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 219.80.130.92
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1434165464.A.850.html ※ 编辑: banana2014 (219.80.130.92), 06/13/2015 11:18:08
1F:→ MOONRAKER: http://goo.gl/M1UZL6 06/13 12:39
2F:→ MOONRAKER: 写两次不够,你要写四次,跟Java一样 06/13 12:40
3F:→ MOONRAKER: 另外(1)mysql_*系列已经作古了。(2)如果还非用mysql_* 06/13 12:41
4F:→ MOONRAKER: 系列,起码*_real_escape_string()用一下。 06/13 12:42
5F:→ banana2014: TO MOONRAKER:但是我写四次反斜线它会跑出一些不相关 06/13 12:52
6F:→ banana2014: 的资料出来,而并非所有含有反斜线的资料都会被列出来 06/13 12:53
7F:→ banana2014: 这就是奇怪的一点 06/13 12:54
例如我的资料表有栏位(xxx),其资料如下: +-------------------------------------------+ | xxx | +===========================================+ | Happy % ^_^ | | Hello! \Hello\ | | /\?"' | | ~!@#$%^&*()_+|}{":?><`1234567890-=\][';/.,| | Oh! My God!!! | +-------------------------------------------+ 照理来讲应该要列出「Hello! \Hello\」、「/\?"'」、「~!@#$%^&*()_+|}{":?><`1234567890-=\][';/.,」这三笔资料的, 但是它却只列出「Happy % ^_^」和「~!@#$%^&*()_+|}{":?><`1234567890-=\][';/.,」这两笔资料, 该列出的它没列出(只有列出一笔),而不该列出的它却列出了,这是为什麽呢? ※ 编辑: banana2014 (219.80.128.18), 06/13/2015 13:13:59
8F:→ banana2014: 您给的页面有人提议用「ESCAPE '|'」的方法来避免这种 06/13 13:16
9F:→ banana2014: 反斜线问题的发生,不过这样就变成说「|」也有问题了 06/13 13:17
10F:→ banana2014: 这只是把问题移转给另一个符号而已,并不会把该问题彻 06/13 13:18
11F:→ banana2014: 底解决,所以有无更好的方法能解决这个「MySQL反斜线 06/13 13:20
12F:→ banana2014: 问题」呢? 谢谢 06/13 13:20
13F:→ MOONRAKER: ……我觉得你先加那个mysql_real_escape_string() 06/13 13:25
14F:→ MOONRAKER: 然後再试… 一个\到四个\都试一试… 06/13 13:27
15F:推 wotupset: 会叫出有%的资料 应该是你查询打错了 像是:"%\\%%" 06/13 14:40
16F:→ wotupset: 列出的资料都是含有% 06/13 14:40
17F:→ banana2014: 没有喔 我是打"%\\\\%" 像这样喔 但是很奇怪的就是我 06/13 14:46
18F:→ banana2014: 不管照你们的方式怎麽打(包括加mysql_real_escape_str 06/13 14:47
19F:→ banana2014: 它依旧跑出一样的结果 很奇怪 06/13 14:48
<? $search="\\\\"; $link=mysql_connect("localhost","xxx","ooo"); mysql_select_db("xxx",$link); mysql_query("SET NAMES UTF8"); $search=mysql_real_escape_string($search); if($search){ $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); ?> 像以上的结果会是什麽都没有显示,请问该怎麽解决呢? ※ 编辑: banana2014 (219.80.128.18), 06/13/2015 14:55:00
20F:→ Darkland: "\\\\" 不加 real_escape ,或 "\\" 加 real_escape 06/13 18:40
21F:→ Darkland: 不然就开 client tool 直接去 db 下 query 下到满意再 06/13 18:42
22F:→ Darkland: 回来看怎麽用 PHP 组出要的 query 阿 06/13 18:42
23F:→ xxxzzz: $search="\\"; => PHP结果 => 字串 \ 06/14 04:47
24F:→ xxxzzz: '%$search%'; => MySQL接收到 '%\%' 06/14 04:47
25F:→ xxxzzz: => 找前面任意字元,且结尾是 % 的资料 => 所以找不到 06/14 04:48
26F:→ xxxzzz: 同理,$search="\\\\"; 传给MySQL是 '%\\%'; 06/14 04:49
27F:→ xxxzzz: 总之,\ 同时是PHP和MySQL的特殊字元 06/14 04:53
28F:→ banana2014: TO xxxzzz:照理来讲$search="\\\\"传给MySQL的搜寻条 06/14 12:02
29F:→ banana2014: 件是找中间是反斜线、前後是任意字元的资料,但是我输 06/14 12:04
30F:→ banana2014: 入$search="\\\\"後(在没有加mysql_real_escape_str时 06/14 12:06
31F:→ banana2014: ),它的搜寻结果竟然跟$search="\\"的结果是一样的, 06/14 12:07
32F:→ banana2014: 都是那两笔含有「%」符号的资料,总不可能MySQL是从後 06/14 12:08
33F:→ banana2014: 面读取字串的吧... 不然怎麽又会把它理解成前面任意字 06/14 12:09
34F:→ banana2014: 元、後面一杠反斜线加「%」的符号呢? (其实这样也不应 06/14 12:11
35F:→ banana2014: 该显示出任何结果的,因为根本没有资料的末端两字元会 06/14 12:13
36F:→ banana2014: 是一杠反斜线加「%」符号,所以这才是我觉得非常奇怪 06/14 12:14
37F:→ banana2014: 的一点)。 06/14 12:14
38F:→ wotupset: 你跑资料库是用什麽? 免费空间吗? 06/14 13:08
39F:→ banana2014: MySQL 租虚拟主机 06/14 15:23
40F:→ banana2014: 不晓得各位试试後有没有问题 06/14 15:24







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP