質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

40806閲覧

phpでmysqlを操作する時の、文頭の$stmt = の意味

dialbird

総合スコア379

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1グッド

3クリップ

投稿2016/01/11 05:07

こんにちは。

タイトルの通り、$stmt=の存在意義がわかりません。

例えば、

php

1$stmt = $pdo->prepare("SELECT * FROM table_name WHERE flag='0'"); 2$flag = $stmt->execute();

といった例ならば、$stmtを利用しているのがまだ目に見えてわかるのですが、

php

1$stmt = $pdo->query('SET NAMES utf8');

は何のために$stmtを文頭に置いているのか分からず、更に

php

1$db->query($sql); //$sqlはこれよりも前に指定済み

に至っては、先ほどのqueryで文頭に使われていた$stmtが消えています。
なので何が何だか分からずひどく混乱しています。
どなたかわかりやすい解説をお願いいたします........。

fumi35👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikuwow

2016/01/11 06:39

PDOの仕様等はドキュメントで確認されましたか? http://php.net/manual/ja/class.pdo.php 読んだ上でわからないことがあれば具体的に追記していただけると助かります。
dialbird

2016/01/11 09:22

ご返答ありがとうございます! そして返信が遅れて申し訳ありません! おかげさまで自分の曖昧模糊としていた部分はある程度解決致しました! 参考になるページまで記載していただき、誠にありがとうございました!
guest

回答2

0

ベストアンサー

PDOを使った文脈であれば$stmtはほとんどの場合PDOStatementオブジェクトを表しています。

PDOStatementクラスの説明はマニュアルによれば次のようになっています。

プリペアドステートメントを表します。ステートメント実行後は関連する結果セットを表します。

PDO::queryはSQLを実行し、実行後に実行結果の情報が格納されたPDOStatementオブジェクトを返します。

つまり**$stmt = とすべきは、実行後にSQLの実行結果に関する情報を得たい場合**であり、ただSQLを実行するだけであれば$db->query($sql);のように書けばよいということになります。

投稿2016/01/11 06:30

編集2016/01/11 06:37
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dialbird

2016/01/11 09:19

ご返答ありがとうございます! そして返信が遅れて申し訳ありません! $stmtが必須ではないということがわかって腑に落ちました。 ありがとうございました!
guest

0

stmtはstatementの略です、詰まりそのSQLを指すこと。PHPならこの名を使わなくても構いません。
$tatoeba = $pdo->prepare("SELECT * FROM table_name WHERE flag='0'");
$flag = $tatoeba->execute();
これでもいいの。だが、便利のため、そしてその変数のタイプを忘れないため、stmtをつかうのは伝統です

投稿2016/01/11 05:38

GikgeStephano

総合スコア60

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dialbird

2016/01/11 09:18

ご返答ありがとうございます! そして返信が遅れて申し訳ありません! stmtは伝統なのですね。では私もstmtで使わせていただきます。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問