【发布时间】:2012-08-02 11:28:33
【问题描述】:
我正在尝试填充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 服务器版本相对应的手册,以在第 1-b 行的 '', 'Emdin', 0.165714, 0.0019 )' 附近使用正确的语法
【问题讨论】:
-
你使用的是什么数据库库?
-
@Cups 不是什么 database,而是访问那个数据库的 library。仅核心 PHP 就有 3 个:旧的 mysql、新的 mysqli 和 PDO。
-
参见string literals in MySQL,其中谈到了转义。 (
'form'应该是首选,因为"form"违反了 ANSI。)但是,如果从 PHP 调用(而不仅仅是如图所示的最终查询),请使用适当的技术(即占位符)来防止SQL injection attacks. -
@Pekka 啊 - 我的错误对不起小伙子....