web-dev-qa-db-ja.com

Laravel DB :: insert()とDB :: table()-> insert()の違い

私はどちらをいつ使うべきか、そして両方を使うべきかどうかを考えていました。

Laravel docsを見て、両方にそこにあります。私がそれからできることから、DB::insert()DB::table()->insert()よりも「調整された」クエリを提供します。

誰がどのようにいつ使用するかに関して、2つの違いが正確に何であるかを誰かが明確にできるでしょうか?

7
Jesper Andersen
  • DB::insert()raw sql query の場合。例:

    DB::insert('insert into users (id, name) values (?, ?)', [1, 'Dayle']);

  • DB::table()->insert() for query builder 。例:

    DB::table('users')->insert( ['email' => '[email protected]', 'votes' => 0] );

クエリビルダーは条件を生のSQLクエリにコンパイルしますが、はるかに便利なので、それを使用しています

27

常にクエリビルダーをできるだけ使用しようとすると、SQLインジェクションが妨げられます。

LaravelクエリビルダーはPDOパラメータバインディングを使用して、アプリケーションをSQLインジェクション攻撃から保護します。バインディングとして渡される文字列をクリーンアップする必要はありません

クエリビルダーは、値内の「、」などの特殊文字も使用できます。生のステートメントの場合は、特殊文字を自分で処理する必要があります。

1
Yan Zhao