1

私のデータベースには、 stackover /'!@#/ \;"""' 。;\';'./のような値があり 、すべて特殊な文字が含まれています。問題は、次のようなクエリを作成する方法です。

$linkName= // getting from db
$sql_sm="SELECT d FROM MyBundle:MyTable d WHERE d.name = '$linkName'";

エラーが発生しました:

[Syntax Error] line 0, col 115: Error: Expected end of string, got '\'
4

1 に答える 1

3

doctrine ormのプレースホルダー サポートを使用します。

$query = $em->createQuery('SELECT d FROM MyBundle:MyTable d WHERE d.name = ?1');
$query->setParameter(1, $linkName);

$users = $query->getResult();

このようにして、あなたのようなエラーを防ぐことができます。さらに重要なのは、SQL インジェクションです。

このアプローチのもう 1 つの重要なポイントは、DQL 文字列が一定のままであることです。DQL が変更されるたびに、クエリ キャッシュ結果キャッシュキーの両方が変更されます。これは基本的に、パフォーマンスが大幅に低下することを意味します。

于 2013-03-15T08:59:50.603 に答える