可能重复:
如何通过PHP和mysql 正确地转义字符串
我正在尝试填充一个MySQL
数据库,为此,我解析了一个数据文件并运行了一个INSERT INTO ...
查询。表CCD_ 3的结构为:
+-------------+---------+------+-----+---------+----------------+
| 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
值带有'
,那么我如何在其他值中转义我的字符串以忽略或从字符串中删除这些'
呢?
示例:
INSERT INTO parsonspredictions_R (
drug_a,
drug_b,
correlation,
p_value
) VALUES(
'2'-Hydroxyflavanone_28_0',
'Emodin',
0.165714,
0.0019
);
结果:
无效查询:您的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解在第1-b行的","Emodin",0.165714,0.0019)"附近使用的正确语法
如果您使用的是mysqli,请尝试使用此函数mysqli_real_escape_string;如果您不使用mysqli,只需在谷歌上简单搜索:escapes special characters in a string PHP
即可找到解决方案。
如果你想完全避免这个问题,你应该尝试使用PDO类及其对准备好的语句的处理。
假设您使用的是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
);
您可以通过键入来转义'-字符
INSERT INTO parsonspredictions_R (
drug_a,
drug_b,
correlation,
p_value
) VALUES(
'2''-Hydroxyflavanone_28_0',
'Emodin',
0.165714,
0.0019
);
或者您可以将您的字符串放在MySQL查询中的"-引号中。
编辑时间:要使您的文件准备好使用regex,您可以在使用regex之前对文本使用mysql_real_escape_string()
。它将逃脱所有可疑的字符,如字符。