![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
バインドする必要のあるパラメーターがない、
bindParam()やbindValue()によってパラメーターがバインドされている
時は、引数は用いません。
実行時点でパラメーターをバインドする時は、引数を用います。
リファレンスを読むクセをつけましょう。
https://www.php.net/manual/ja/pdostatement.execu …
No.4
- 回答日時:
他の方の回答に、ユーザー入力が絡まない場合はqueryでいいかのような表現をされていますが、受け取り方では違います。
DBから見たユーザーとは、PHPになります。
つまり、PHPのロジックで、不定な値を利用してDB問い合わせをするときは、queryは好ましくありません。
つまり、DBから見たら、何も入力値はブラウザから来るとは限らないということです。
queryで構わないパターンは、完全に定まった文字列のクエリを発行する時だけです。
何らかの起因によってSQLインジェクションを及ぼす可能性があります。
よって、プレースホルダーがあろうがなかろうが、常にprepare、executeを利用しましょう。
不要なシーンもありえますが、楽しようとして悪いクセをつけてしまわないように。
No.3
- 回答日時:
ユーザーが入力した値を使ってSQLを実行する場合は、prepareとexecuteを使ってプレースホルダーの機能で入力値をSQLに埋め込みます。
ユーザーが入力した値を使わないクエリーはqueryでいいです。
不正アクセスとかが無かった大昔に書かれた本だと、ユーザーが入力した値をプレースホルダーを使わずにSQLに埋め込んでいるサンプルが書かれてたりしますが、今そんなことをしたらあっという間に不正アクセスされてしまいます。
No.2
- 回答日時:
queryはselect文等でよく使われるようです
prepareはinsert文など複数件のクエリを処理する場合にパフォーマンスが良いのだそうです
executeは
prepareでステートメント準備後にexecute(実行)するという事ですね
PHPのリファレンスを見ると以下の様にあります
---
PDO::query() は、一回の関数コールの中で SQL ステートメントを実行し、このステートメントにより返された 結果セット (ある場合) を PDOStatement オブジェクトとして返します。
複数回発行する必要があるステートメントの場合、 PDO::prepare() で PDOStatement ステートメントを準備し、 PDOStatement::execute() でそのステートメントを 複数回発行する方がより良いパフォーマンスを得られると実感するでしょう。
異なるパラメータを用いて複数回実行されるような文に対し PDO::prepare() と PDOStatement::execute() をコールすることで、 ドライバがクライアントまたはサーバー側にクエリプランやメタ情報を キャッシュさせるよう調整するため、 アプリケーションのパフォーマンスを最適化します。また、 パラメータに手動でクオートする必要がなくなるので SQL インジェクション攻撃から保護する助けになります。
---
https://www.php.net/manual/ja/pdo.query.php
以上、ご参考まで
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
httpdのプロセスが自動で消えな...
-
phpでアクセス権の設定
-
PHPからバッチファイルの実行
-
php実行中に実行中のphpファイ...
-
PHPでサーバーにインストールさ...
-
PHPで、C#のプログラムを実行す...
-
phpからエクセルのマクロを実行...
-
system()でssh命令文の実行結果...
-
PHPのコマンドをnobodyオーナで...
-
フォントの色を変えるには?
-
PHPのif文でその処理を途中で抜...
-
Pear::QuickFormの代わりにな...
-
CFileDialogの最初のディレクト...
-
.phpと.incファイルの違いはな...
-
Subversionのリポジトリの削除
-
透過PNGが透過されない!!
-
受け取ったパラメータを次のphp...
-
zip圧縮の種類について
-
WordPressでテーマのヘッダー画...
-
XAMMPのインストールについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ヒアドキュメントの中で演算子...
-
PHPからバッチファイルの実行
-
mysql複数レコードをまとめて削...
-
PHPでサーバーにインストールさ...
-
Switch文における、returnとbre...
-
PHPでコマンドプロンプトを実行...
-
phpからエクセルのマクロを実行...
-
【PHP】命令は記述順に処理...
-
PHPで、C#のプログラムを実行す...
-
別サーバのプログラムを起動
-
JSのWINOW.CONFI...
-
htmlでsubmitで指定したAction...
-
require_onceが動いていない
-
systemをrootで実行したい
-
PHPで外部プログラムのバックグ...
-
PHPからlhaコマンドを使いたい
-
phpスクリプトのみで定期実行
-
PHPでUNIXシステムコマンド...
-
PHPからexecを使ってGnuPGを実...
-
PHPスクリプトからサービスの再...
おすすめ情報
回答ありがとうございます。executeメソッドを引数なしで使う場合と、
引数として配列を入れる場合の違いは何ですか?
回答ありがとうございます。execute()メソッドの引数として配列を入れるのはプレースホルダに値をバインドする場合(SQL文に?を使う)ということで合っていますか?