PHP+MySQL入門

SQLの実行2 SELECT構文

全333コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
SQLの中でも、SELECTの構文は扱うのが非常に難しくなります。ここでは、一つ一つの手続きを丁寧に紹介しましょう。
講師:
13:02

字幕

ここでは、SQL の実行の2つ目としましてセレクト構文について紹介していきたいと思います。このレッスンは、前のレッスンからの続きとなりますので2つ続けてご覧ください。SQL の中でもセレクト構文データを検索したり取り出したりするという構文をphp から使う場合かなり難しい操作が必要になってきます。1つ1つ整理して理解していきましょう。では、まずプロジェクトを紹介していきます。ここでは、前のレッスンで作ったプロジェクトをコピーしてlesson01-07 というフォルダ名にしました。そして同時にこちら mysql のほうですがphpmysql というデータベースが作成されています。先ほど作っていたこちらitem_table というテーブルですがこれまず1度「操作」をクリックしていただいてこちら「テーブルを削除する」というボタンで削除をしておいてください。そして空になった状態でこちら素材ファイルの中にこちらのphpmysql.sql というファイルがあります。これは、データベースをバックアップしたバックアップファイルでこれをインポートすることで作っておいたデータベースを復元することができます。 ここでは、こちら今作った phpmysql というデータベースのスペースでインポートをしていただきこちら phpmysql.sql というファイルを選択してインポートをするようにしてください。すると、今こちらの画面のように「 genre_master 」「 item_log 」「 item_table 」といった各テーブルが出来上がります。では、こちらでプロジェクトを作っていきましょう。まず、テーブルについて内容を確認しておきます。item_table の「表示」をクリックしますと、このようにいくつかのデータが入っています。リレーショナルデータベースとなっていてgenre_master とリレーションが貼られていたりitem_log から item_table へリレーションが貼られていたりといった複雑なテーブルの構成になっています。では、こちらで実際にやっていきましょう。まず、こちら php のファイルを開きました。そして、こちらデータベースへの接続の3つの手順データベースに接続しデータベーススペースを選択してそして文字コードを設定するという手順を行った後でここで mysql_query というファンクションを使ってspl を実行するというのは1つ前のレッスンで紹介しています。 しかし、select の sql を投げる場合ここには変数を準備しておく必要があります。例えば、ここでは rowsrow というのは行などという意味の英単語でここでは、テーブルから取得したデータの行を複数取得するということでrows という変数名にしました。変数名はもちろん、何でも結構です。ではこちらでイコールとしてmysql_query とします。そして select として *FROM でitem_table としましょう。そしてここでは WHERE としてここでは id=1 としてこちらデータベースにある、いちごという情報を取得することにしましょう。では、最後に or die のmysql_error と記述して続けてスクリプトを記述していきます。続けてこのように rows から1行取り出すという意味でrow という変数の名前を準備しました。ここに mysql_fetch_assocというふうに記述をします。そしてこの中に、今取得したこちらのrows という変数を指定しました。この mysql_fetch_assocというファンクションはfetch というのは割り当てるという意味のある英単語でまた、こちらの assoc というのはassociate の略称でここでは連想配列のことを言います。連想配列というのはこの後紹介しますがインデックスに任意の文字列を指定することができる配列のことです。 つまりここでは、mysql から取得した情報を連想配列に割り当てる、呼び出す紐づけるというような意味のファンクションになります。ここでこの rows という変数ですがこの mysql_query というファンクションに select の sql を記述するとこのファンクションはrows という変数に対してデコードセットという非常に特別な値を割り当ててくれます。試しにこの rows というのを画面に表示してみましょう。print($rows); としてみます。そしてこの画面を表示してみましょう。こちら MAMP が起動されている状態でウェブブラウザでこちら lesson01-07 にアクセスをします。するとこのように Resource id #3などと表示されています。これは、私たちの目には見えないような変数でレコードセットという非常に特別な値になっていることがわかります。そこで、このレコードセットを処理するためにはどうしたらいいかというとmysql_fetch_assoc というファンクションが必ず必要になるわけです。これに対して rows レコードセットをセットすることでここから1行取り出して連想配列にしてくれます。 連想配列になれば、私たちにも非常に扱いやすい形式になりますのであとは、ここでこのようにしていきます。print 括弧して row のitem_name とします。これでスクリプトを動かしてみましょう。今表示していた lesson01-07 の画面を改めて表示します。すると、このようにいちごと表示されました。これで、このデータベースからいちごの情報が取り出せていることが分かります。では、例えば今度は price を取り出してみましょう。こちらを price に変更してみます。するとこのように price である120が正しく取得できていることも分かります。この mysql_fetch_assocというファンクションで作られる連想配列は、その index にこちら、table のフィールド名が割り当てられます。そのため、商品の名前を取り出したければindex は item_name ですしprice を取り出したければその index は price となるという形でここまで来ると非常に理解しやすい形式になります。ただ、その前段階で少し面倒臭い手続きが必要になってきますのでここにまずは慣れていきましょう。 さて、ここでは1件だけデータを取得しましたが例えば、複数のデータを取得する場合はどうしたらよいでしょうか。ここでは、WHERE の条件を外してみます。すると、item_table からは全件のデータが取得されます。では、こちらで画面を表示してみましょう。このように動作させると120とだけ出ます。もうちょっと分かりやすいようにitem_name を表示してみましょう。そうするといちごが表示されました。しかし、その次のデータであるりんごはまだ見えません。では、このりんごを表示させるためにはどうしたら良いでしょうか。実は、ここも非常に特殊なんですがこのように row=mysql_fetch_assocというのをもう1度記述します。そして、ここでちょっとこのように改行を入れておいてここでrow の item_name としてみましょう。すると、いちご・りんごというふうに表示されました。実はこの mysql_fetch_assocというファンクションにはもう1つ非常に特殊な動きがありまして複数回呼び出されるとその度に行を改めてデータを取得してくれるという特徴があります。そのため、例えばこれを何個もコピーしていくとこのようにその都度どんどんデータが導き出されていきます。 このようにデータベースから複数のデータを取り出した時はmysql_fetch_assoc を繰り返し呼び出してそれを変数に格納し、その変数の連想配列を使うという特徴があります。ここで php の基本を思い出していただくとこの同じ作業を何度も繰り返すというのはphp のある制御構造ですっきりと書けることを思い出せるかもしれません。ここではこれらを全て消してこのような記述をしていきましょう。while として括弧します。そして row=mysql_fetch_assocというのを中に含めるような形にしここでは少し表示を整えていきましょう。ul でマークアップをしてこのようにしましょう。そして、ここで li の printそして row の item_nameとしましょう。それから、print の row のprice としてみます。そして後は ul を閉じればこれで完成です。では、実際に確認してみましょう。enter をすると、このようにいちごからきゅうりまで全部の件数がページに表示されています。軽く動きを確認しておきたいと思います。mysql_fetch_assoc というこちらのファンクションは何度も呼び出すとその都度行が変わってデータがこのようにセットされていきます。 そのため、この while の条件の中でここでは mysql_fetch_assoc をした結果を row に入れるという作業を一気に行っています。ここで間違えやすいんですがこれは row と mysql_fetch_assoc を統合で比べているわけではありません。while の中の条件の統合はイコール2つでした。ここではイコールが1つしか無いのでこれは、統合で比べるわけではなくセットするという動きを表しています。mysql_fetch_assoc はデータが全て無くなると falseという情報を返しますのでこの while は条件を満たさなくなりこちら ul の閉じタグまでジャンプするという性格があります。そのため、この記述で正しく動くわけです。後は、その while 構文の中でli タグを記述しrow の item_name と price をそれぞれ出力しているために画面上にこのように表示されるというわけです。このセレクトの sql をphp で使うのは、かなり難しいですがこれに慣れるとデータベースを使ったウェブのシステムを自由自在に作ることができますので是非慣れておきましょう。

PHP+MySQL入門

MySQLというデータベースはPHPと連携させてウェブサイト上で利用することによってよりその威力を発揮します。このコースではPHPとMySQLを組み合わせたWebシステムを構築する手法を紹介します。コースの後半ではページングの処理の仕方などについて学びながら、具体的に挿入画面や編集画面の作成を行っていきます。

3時間08分 (21 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 2,990
発売日:2014年01月20日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。