往数据库中插入特殊字符

时间:2023-01-04 19:07:16
特殊字符例如 ' ,在保存进数据库中的时候自动转化成了&#36, 再从数据库中查询出来的时候就变成了&#36, 有没有sql语句或者是php的方法可以在查询出结果来以后把类似&#36这样的内容转化会 ' 的方法呢?

6 个解决方案

#1


数据库中你可以用 replace 如下

mysql> select '化成了&#36, 再',replace('化成了&#36, 再','&#36','\'');
+----------------+---------------------------------------+
| 化成了&#36, 再 | replace('化成了&#36, 再','&#36','\'') |
+----------------+---------------------------------------+
| 化成了&#36, 再 | 化成了', 再                           |
+----------------+---------------------------------------+
1 row in set (0.00 sec)

mysql>

#2


引用 1 楼 acmain_chm 的回复:
数据库中你可以用 replace 如下

SQL codemysql>select'化成了&#36, 再',replace('化成了&#36, 再','&#36','\'');
+----------------+---------------------------------------+
| 化成了&#36, 再 | replace('化成了&#36, 再','&#36','\'')|+----------------+---------------------------------------+| 化成了&#36, 再| 化成了', 再                           |
+----------------+---------------------------------------+
1 row in set (0.00 sec)

mysql>


看不太明白, 我的项目赶着交, 里面的数据特殊符号都给转化了, 可以说的详细点吗, 是在看不懂你写的这个, 这是sql语句吗?

#3



PHP 中你也可以直接用PHP

str_replace("&#36", "'", "<body text='化成了&#36, 再'>");

#4


引用
看不太明白, 我的项目赶着交, 里面的数据特殊符号都给转化了, 可以说的详细点吗, 是在看不懂你写的这个, 这是sql语句吗?


贴出你现在的SQL语句。

#5



ACMAIN_CHM, 谢谢你的回复.

sql语句我不知道改怎么写, 就是查询的时候可以把查询出来的结果里面的类似&#36, 这样的转化成会原来的字符. 查询出来的结果用print打印出来的时候, 在网页上面出现的是 ', 但是是html本身把 &#36 转化成了 '. php 或者数据库的语句有没有这样的语句啊, 不是只转化 ' 这一个, 还有一些别的特殊字符, 有没有php 或者数据库的方法可以把这些一次替换或者转化完?

#6


引用楼主 lzcwxc1986 的回复:
特殊字符例如 ' , 在保存进数据库中的时候自动转化成了&#36, 再从数据库中查询出来的时候就变成了&#36, 有没有sql语句或者是php的方法可以在查询出结果来以后把类似&#36这样的内容转化会 ' 的方法呢?

MySQL 本身似乎不会自动做这种转化,更可能的是,你提交给 SQL 语句的值已经被转化了。

根本解决问题的办法是找到哪个环节做了这种不应该有的“转化”,消灭它。

当然,对于已经进入数据库的数据,如果你不想清掉重新来的话,可以用前面 ACMAIN_CHM 说的 replace() 方法逐个手工转回来。

#1


数据库中你可以用 replace 如下

mysql> select '化成了&#36, 再',replace('化成了&#36, 再','&#36','\'');
+----------------+---------------------------------------+
| 化成了&#36, 再 | replace('化成了&#36, 再','&#36','\'') |
+----------------+---------------------------------------+
| 化成了&#36, 再 | 化成了', 再                           |
+----------------+---------------------------------------+
1 row in set (0.00 sec)

mysql>

#2


引用 1 楼 acmain_chm 的回复:
数据库中你可以用 replace 如下

SQL codemysql>select'化成了&#36, 再',replace('化成了&#36, 再','&#36','\'');
+----------------+---------------------------------------+
| 化成了&#36, 再 | replace('化成了&#36, 再','&#36','\'')|+----------------+---------------------------------------+| 化成了&#36, 再| 化成了', 再                           |
+----------------+---------------------------------------+
1 row in set (0.00 sec)

mysql>


看不太明白, 我的项目赶着交, 里面的数据特殊符号都给转化了, 可以说的详细点吗, 是在看不懂你写的这个, 这是sql语句吗?

#3



PHP 中你也可以直接用PHP

str_replace("&#36", "'", "<body text='化成了&#36, 再'>");

#4


引用
看不太明白, 我的项目赶着交, 里面的数据特殊符号都给转化了, 可以说的详细点吗, 是在看不懂你写的这个, 这是sql语句吗?


贴出你现在的SQL语句。

#5



ACMAIN_CHM, 谢谢你的回复.

sql语句我不知道改怎么写, 就是查询的时候可以把查询出来的结果里面的类似&#36, 这样的转化成会原来的字符. 查询出来的结果用print打印出来的时候, 在网页上面出现的是 ', 但是是html本身把 &#36 转化成了 '. php 或者数据库的语句有没有这样的语句啊, 不是只转化 ' 这一个, 还有一些别的特殊字符, 有没有php 或者数据库的方法可以把这些一次替换或者转化完?

#6


引用楼主 lzcwxc1986 的回复:
特殊字符例如 ' , 在保存进数据库中的时候自动转化成了&#36, 再从数据库中查询出来的时候就变成了&#36, 有没有sql语句或者是php的方法可以在查询出结果来以后把类似&#36这样的内容转化会 ' 的方法呢?

MySQL 本身似乎不会自动做这种转化,更可能的是,你提交给 SQL 语句的值已经被转化了。

根本解决问题的办法是找到哪个环节做了这种不应该有的“转化”,消灭它。

当然,对于已经进入数据库的数据,如果你不想清掉重新来的话,可以用前面 ACMAIN_CHM 说的 replace() 方法逐个手工转回来。