-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構文にエラーがあります。1行目-bの''、'Emodin'、0.165714、0.0019)'の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

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

'-文字を入力してエスケープできます

INSERT INTO parsonspredictions_R (
    drug_a,
    drug_b,
    correlation,
    p_value
) VALUES(
    '2''-Hydroxyflavanone_28_0',
    'Emodin',
    0.165714,
    0.0019
);

または、MySQLクエリの文字列を""-引用符で囲むことができます。

編集済み:ファイルを正規表現で使用できるようにするには、正規表現を使用mysql_real_escape_string()する前にテキストで使用できます。'-文字のようなすべての疑わしい文字をエスケープします。

于 2012-08-04T22:00:54.750 に答える