-2

可能重复:
如何通过 PHP 和 mysql 正确转义字符串

我正在尝试填充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 行的 '', 'Emodin', 0.165714, 0.0019 )' 附近使用正确的语法

4

2 回答 2

1

如果您正在使用 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
);
于 2012-08-04T21:57:40.060 回答
0

您可以通过键入转义 '-character

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()在使用正则表达式之前在文本上使用。它将转义所有可疑字符,例如'-character。

于 2012-08-04T22:00:54.750 回答