我正在尝试填充MySQL
数据库,为此我正在解析数据文件并运行INSERT INTO ...
查询。
表parsonspredictions_R
的结构如下:
+-------------+---------+------+-----+---------+----------------+
| 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服务器版本对应的手册,以便在'','Emodin',0.165714,0.0019)附近使用正确的语法'在第1-b行
答案 0 :(得分:1)
如果您使用的是mysqli,请尝试使用此功能mysqli_real_escape_string,如果您没有使用mysqli进行简单的Google搜索: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
);
答案 1 :(得分:0)
您可以通过输入
来逃避'字符INSERT INTO parsonspredictions_R (
drug_a,
drug_b,
correlation,
p_value
) VALUES(
'2''-Hydroxyflavanone_28_0',
'Emodin',
0.165714,
0.0019
);
或者你可以将你的字符串放在“--quotes。”中的MySQL查询中。
编辑:
要使文件为正则表达式做好准备,您可以在使用正则表达式之前对文本使用mysql_real_escape_string()
。它将逃脱所有可疑字符,例如'-character。