7

一重引用符で囲まれた値を使用して次のクエリを実行したいと考えています。

INSERT INTO web_camp_keywords (web_id, keyword) VALUES (195, 'abc'hotels')

abc'hotels付加価値をつけたいだけ。バックスラッシュを使用しましたが、機能しませんでした。

INSERT INTO web_camp_keywords (web_id, keyword) VALUES (195, 'abc\'hotels')

どうすればこれを解決できますか?

4

2 に答える 2

8

一重引用符を別の一重引用符でエスケープできます。

INSERT INTO web_camp_keywords (web_id, keyword) 
VALUES (195, 'abc''hotels')

しかし、個人的には、 bind parameters を使用して準備済みステートメントを使用する必要があると思います。

とりわけ、バインド パラメーターを含むプリペアド ステートメントを使用することは、Web アプリケーションのセキュリティ ホールの最大の原因であるSQL インジェクションから保護するための最も簡単な方法の 1 つです。

于 2012-08-08T05:22:18.703 に答える
2

Chris Moutray や他の人が言及したように、pdo と準備済みステートメントを使用するのが最善です。ステートメントを準備し、ステートメントに値を指定して実行する方法の例を次に示します。接続を省略しました。

$statement = $pdo->prepare("insert into web_camp_keywords (web_id, keyword) values (:id, :keyword)");
$statement->bindValue(':id', 195);
$statement->bindValue(':keyword', "abc'hotels");
$statement->execute();
于 2012-08-08T05:58:19.350 に答える