求助高手:往库里插入数据,数据的“\”符号都没了??

lukylfm 2010-06-28 04:38:39
我把数据为 $url_pattern=":/(\/[\d]{6}\/t[\d]{8}_[\d]{7,}\.html)/i";
插入数据库中数据变为 "/(/[d]{6}/t[d]{8}_[d]{7,}.html)/i"
自动把反斜杠“\”都去掉了


我的网页格式为 :gb2312
mysql库链接校对:UTF8_Unicode_ci(跟这个应该没关系吧)


我是哪里没有注意到还是什么设置错了
...全文
125 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2010-06-30
  • 打赏
  • 举报
回复
[Quote]没人理我
是说我该好好学一下Mysql参考手册么[/Quote]

上面不是已经解释得很清楚了吗? \是MYSQL中的转义符,MYSQL会把它和后面紧跟的字符一起对待分析。

MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
[Quote]在字符串中,某些序列具有特殊含义。这些序列均用反斜线(‘\’)开始,即所谓的转义字符。MySQL识别下面的转义序列:

\0
ASCII 0(NUL)字符。

\'
单引号(‘'’)。

\"
双引号(‘"’)。

\b
退格符。

\n
换行符。

\r
回车符。

\t
tab字符。

\Z
ASCII 26(控制(Ctrl)-Z)。该字符可以编码为‘\Z’,以允许你解决在Windows中ASCII 26代表文件结尾这一问题。(如果你试图使用mysql db_name < file_name,ASCII 26会带来问题)。

\\
反斜线(‘\’)字符。

\%
‘%’字符。参见表后面的注解。

\_
‘_’字符。参见表后面的注解。


这些序列对大小写敏感。例如,‘\b’解释为退格,但‘\B’解释为‘B’。

‘\%’和‘\_’序列用于搜索可能会解释为通配符的模式匹配环境中的‘%’和‘_’文字实例。参见12.3.1节,“字符串比较函数”。请注意如果你在其它环境中使用‘\%’或‘\_’,它们返回字符串‘\%’和‘\_’,而不是‘%’和‘_’。

在其它转义序列中,反斜线被忽略。也就是说,转义字符解释为仿佛没有转义。

[/Quote]
lukylfm 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lukylfm 的回复:]
引用 9 楼 zuoxingyu 的回复:
SQL code

mysql> select '\\' as a;
+---+
| a |
+---+
| \ |
+---+
1 row in set (0.00 sec)

mysql> select '\\\'' as a;
+----+
| a |
+----+
| \' |
+----+
1 row in s……
[/Quote]

没人理我
是说我该好好学一下Mysql参考手册么
lukylfm 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zuoxingyu 的回复:]
SQL code

mysql> select '\\' as a;
+---+
| a |
+---+
| \ |
+---+
1 row in set (0.00 sec)

mysql> select '\\\'' as a;
+----+
| a |
+----+
| \' |
+----+
1 row in set (0.00 sec)



需……
[/Quote]

不明白
zuoxingyu 2010-06-28
  • 打赏
  • 举报
回复

mysql> select '\\' as a;
+---+
| a |
+---+
| \ |
+---+
1 row in set (0.00 sec)

mysql> select '\\\'' as a;
+----+
| a |
+----+
| \' |
+----+
1 row in set (0.00 sec)


需要用\转义。想用单引号也是。
lukylfm 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ldb2741 的回复:]
引用 6 楼 lukylfm 的回复:
恩,谢谢,解决了
用的addslashes()
就是不知道会不会影响其他执行

用replace也可以做到

在php里不要用这个函数,不然到后面你会后悔的
[/Quote]

想问一下为什么,一般会出现什么问题呢
ldb2741 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lukylfm 的回复:]
恩,谢谢,解决了
用的addslashes()
就是不知道会不会影响其他执行

用replace也可以做到
[/Quote]
在php里不要用这个函数,不然到后面你会后悔的
lukylfm 2010-06-28
  • 打赏
  • 举报
回复
恩,谢谢,解决了
用的addslashes()
就是不知道会不会影响其他执行

用replace也可以做到
ACMAIN_CHM 2010-06-28
  • 打赏
  • 举报
回复
利用REPLACE函数把 \ 转成 \\
WWWWA 2010-06-28
  • 打赏
  • 举报
回复
用REPLACE试试
replace("/(\/[\d]{6}\/t[\d]{8}_[\d]{7,}\.html)/i"格式再变为 (\\/[\\d]{6}\\/t[\\d]{8}_[\\d]{7,}\\.html)/i",'\','\\')
lukylfm 2010-06-28
  • 打赏
  • 举报
回复
正则是我从文本框输入的,用来匹配信息的,之后把正则在存到库中
从文本框输入 "/(\/[\d]{6}\/t[\d]{8}_[\d]{7,}\.html)/i" 用post得到的是 "/(\\/[\\d]{6}\\/t[\\d]{8}_[\\d]{7,}\\.html)/i"
我用stripslashes()函数把多余的反斜杠去掉了,可往数据库插入时,多出来的反斜杠又有用了

可不可以用函数或其他方法把 "/(\/[\d]{6}\/t[\d]{8}_[\d]{7,}\.html)/i"格式再变为 (\\/[\\d]{6}\\/t[\\d]{8}_[\\d]{7,}\\.html)/i" 形式哈
wwwwb 2010-06-28
  • 打赏
  • 举报
回复
用\转义
WWWWA 2010-06-28
  • 打赏
  • 举报
回复
SELECT ":/(\\/[\\d]{6}\\/t[\\d]{8}_[\\d]{7,}\\.html)/i",

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧