如何在php中转义字符串?

时间:2012-08-04 21:54:29

标签: php mysql

  

可能重复:
  How to properly escape a string via PHP and 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服务器版本对应的手册,以便在'','Emodin',0.165714,0.0019)附近使用正确的语法'在第1-b行

2 个答案:

答案 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。