2017-11-30 4 views
0

以下のコードは、引用符"<span id="1">3</span> "の引用符で囲まれているため、実行するたびにエラーが発生します。これはデータベースに保存する必要がある形式なので、 cakephp3データベースにこれを保存するときに何とか値をエスケープ?データベースの更新時に引用符をエスケープする方法

$sql='update tags set description ="<span id="1">3</span>"'; 
$connection = ConnectionManager::get('default'); 
$stmt = $connection->execute($sql); 
+0

は、なぜあなたはこれを処理するために、表とモデルを使用していない引用? – SamHecquet

+0

をエスケープしますそれは簡単ですしていますテーブルを使用しますが、多くの重要なデータはテーブル上にあり、私はいくつかのカラムの更新を担当しているだけなので、他のカラムの他のデータを誤って更新しないようにしたいのですが、CakePHP 3の新機能ですので、 –

答えて

0

は、以下のように思えるが正しく

$desc_to_be_save="<span id="1">3</span>" 
$connection = ConnectionManager::get('default'); 
$connection->update('tags', ['description' => $desc_to_be_save], ['id' => 3]); 
+0

テーブルとエンティティの代わりに直接接続を使用する理由はありますか?とにかく、はい、これはうまくいくはずです( '$ desc_to_be_save'が無効であることを示しています)。注射攻撃やその他の問題を避けるため、可能な限り 'execute'を直接呼び出さないようにしてください。 –

+0

テーブルを使用する方が簡単ですが、テーブルには重要なデータがたくさんありますが、一部のカラムの更新だけを担当していますので、誤って他のデータを更新しないようにしたい私はCakePHP 3の新機能ですので、安全にプレイしようとしています。 –

+0

エンティティを読み込んで1つの列を更新し、エンティティを書き戻す場合、他の列は影響を受けません。つまり、データベース自体にトリガーやストアドプロシージャーがない限り、それを更新しても問題は起こりません。 –

関連する問題