如何在PHP中转义字符串?
可能重复:
How to properly escape a string via PHP and mysql如何在PHP中转义字符串?
我试图填充MySQL
数据库,这样做我解析数据文件和运行INSERT INTO ...
查询。
+-------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| drug_a | blob | NO | | NULL | |
| drug_b | blob | NO | | NULL | |
| correlation | float | NO | | NULL | |
| p_value | float | NO | | NULL | |
+-------------+---------+------+-----+---------+----------------+
然而,也有一些drug_x
值沿着有'
,所以我怎么能逃过我的字符串在其他忽略或删除从字符串的'
:作为 表parsonspredictions_R
的结构?
实例:
INSERT INTO parsonspredictions_R (
drug_a,
drug_b,
correlation,
p_value
) VALUES(
'2'-Hydroxyflavanone_28_0',
'Emodin',
0.165714,
0.0019
);
结果:
查询无效:您的SQL语法错误;检查对应于你的MySQL服务器版本使用附近的“正确的语法手册”,“大黄素”,0.165714,0.0019)”在行1-B
你可以逃脱“字符数限制通过键入
INSERT INTO parsonspredictions_R (
drug_a,
drug_b,
correlation,
p_value
) VALUES(
'2''-Hydroxyflavanone_28_0',
'Emodin',
0.165714,
0.0019
);
或者你可以把你的字符串在MySQL查询中 “” -quotes。
编辑: 为了让你的文件准备好正则表达式,你可以在使用正则表达式之前在文本上使用mysql_real_escape_string()
。它会逃离所有可疑的人物,如'人物。
+1,因为这是正确的,不值得赞赏。但是,由于该问题被标记为PHP,因此可以考虑如何插入“动态数据”。 – 2012-08-04 22:06:31
@Ianka:数据来自一个正在使用正则表达式进行分析的文件,所以我不能手动转义它。 – cybertextron 2012-08-04 22:08:15
@philippe你可以编辑你的正则表达式(或者创建另一个)在文本变量中添加''(2个引号)而不是'(单引号) – user15 2012-08-04 22:11:37
尝试使用此功能mysqli_real_escape_string如果您使用的mysqli ,如果你不使用mysqli,那么简单的谷歌搜索:escapes special characters in a string PHP
会指向你的解决方案。
如果你想避免这个问题完全,你应该尝试使用PDO class和自己拿上准备好的语句。
假设你正在使用的mysqli
$drug_a = mysqli_real_escape_string($drug_a);
$drug_b = mysqli_real_escape_string($drug_b);
INSERT INTO parsonspredictions_R (
drug_a,
drug_b,
correlation,
p_value
) VALUES(
$drug_a,
$drug_b,
0.165714,
0.0019
);
'MySQL'何塞维加! – cybertextron 2012-08-04 21:58:24
@philippe然后*指定您正在使用的数据库库* – 2012-08-04 21:59:01
@philippe - 'mysqli'是'mysql'本机库的PHP *更新*版本。它*是* MySQL。 – 2012-08-04 21:59:22
你正在使用什么数据库库? – 2012-08-04 21:56:06
有一个mysql标记 – Cups 2012-08-04 21:57:47
@Cups不是什么*数据库*,而是什么*库*来访问该数据库。单独的核心PHP有3个:旧的mysql,较新的mysqli和PDO。 – 2012-08-04 21:58:30