dポイントプレゼントキャンペーン実施中!

2週間ほど前からPHPを独学で勉強を始めました。

色々なPHP初級者勉強サイトや本を見ながら四苦八苦しているのですが
データベースのmySQLなどの項目が出てくるたびに
そこで勉強を止めています。

まだ十分にPHPを理解できておらず
シンプルな例題の流れがやっと多少理解できるようになり始めた程度なのですが
そういうレベルでも先にmySQLの勉強を始めたほうが良いのでしょうか?

それともある程度のレベルまでPHPを勉強して
シンプルでもある程度のPHPプログラムが自分で書けるようになって
それからmySQLの勉強を始めたほうが良いのでしょうか?
ちなみにデータベース自体の知識は全くありません。


あと色々なmySQLの初心者入門サイトを見ると
「コマンドプロンプト」からの操作でmySQLの勉強解説が
されています。

XAMPPと一緒にインストールされたmySQLを見ると
コマンドプロンプトでの操作ではなく
エクセルのような画面での操作のようになっています。

mySQLの数年前と最新版のバージョンの違いだと思うのですが、
仕様ががなり違うのか
今更コマンドプロンプト操作での勉強は効率がよいのかなと
不安になってしまいます。

不安になっても勉強するしかないことは分かっていいるのですが
データベースの知識のない初学者が
今からmySQLを勉強するにあたって
お勧めのサイトがあればご紹介ください。

よろしくお願いいたします。

A 回答 (5件)

>> そういうレベルでも先にMySQLの勉強を始めたほうが良いのでしょうか?



個人的には…「NO」ですかね。私がデータベースを触ったのはだいぶ慣れてきてからですね。最初はファイルにデータを保存してでいろいろやってました。

テキスト形式で行ごとにデータを保存から始める(fgets/fwrite関数など)
http://php.net/manual/ja/function.fgets.php
http://php.net/manual/ja/function.fwrite.php

CSV形式というもっと扱いやすいものがあるのを知って移行(fgetcsv/fputcsv関数など)
http://php.net/manual/ja/function.fgetcsv.php
http://php.net/manual/ja/function.fputcsv.php

XML形式の方がいいんじゃないかと思って移行(SimpleXML関数・クラス群)
http://php.net/manual/ja/book.simplexml.php

シリアル形式という一番扱いやすいものに移行(serialize/unserialize関数)
http://php.net/manual/ja/function.serialize.php
http://php.net/manual/ja/function.unserialize.php

SQLiteデータベースに移行(PDOクラス)

MySQLデータベースに移行(PDOクラス)

という流れでしたね…まだPHPのことが全然わかってないならファイル操作あたりから慣れておいた方がいいと思います。排他制御についても勉強できるいい機会ですので。

Wikipedia - 排他制御
http://ja.wikipedia.org/wiki/%E6%8E%92%E4%BB%96% …

PHPではflock関数を用いることで、簡単にファイルポインタに対して排他制御を実装することが出来ます。

PHP Manual - flock
http://php.net/manual/ja/function.flock.php

【ロックの種類】

・LOCK_SH(共有ロック)
読み取り専用にします。他のプロセスの読み取りは許しますが、書き込みは許しません。自分が読み取りだけを行う場合はこれを使うべきです。

・LOCK_EX(排他ロック)
読み書きを全て自プロセスだけで独占します。書き込みを行う場合はこれを使うべきです。

・LOCK_UN(ロック解除)
操作が終わった後はロック解除を行います。

・LOCK_NB
ノンブロッキングモードにします。具体的には、操作可能になるまで待機せず、1回チェックして無理だったらflock関数実行失敗としてすぐ処理に復帰します。他のフラグと「|」演算子で組み合わせて使います。特性上アドバイザリロックである必要があるので、Windowsでは使用できません。


【OS別の違い】

・Windows
「強制ロック」を行います。これを行っている間は他のプロセスからの許可されていない操作を絶対に許しません。例えば自プロセスが「LOCK_SH」でロックしている間、他のプロセスがファイルをオープンしてきてflock関数のチェック無しにいきなり書き込みを行おうとしても、こちらの操作が終わるまでそこで待機させ続けます。

・その他(Linuxなど)
「アドバイザリロック」を行います。強制ロックと違って、flock関数によるチェック無しにいきなり書き込みを行おうとしても操作出来てしまいます。全てのプロセスがflock関数によるチェックを行い、それぞれで「今この操作が許されているのかどうか」を確認しなければロックの意味がありません。強制ロックでは「強制」の字の通り横暴な操作を防ぐことが出来ましたが、アドバイザリロックではプログラマが責任を持ってちゃんと実装する必要があります。

なお、データベースではこういった排他処理が全て自動化されていますので、プログラマが実装する必要がありません。しかし非常に大切な概念なので、最初はファイルベースでやっていろいろ学んでほしいな…とは思いますが…

>> XAMPPと一緒にインストールされたMySQLを見るとコマンドプロンプトでの操作ではなくエクセルのような画面での操作のようになっています。

「phpMyAdmin」のことですね。MySQL自体の機能ではなく、MySQLを扱いやすいようにPHPで作られたインターフェースがこれです。バージョンの違いではありません。

>> 今更コマンドプロンプト操作での勉強は効率がよいのかなと不安になってしまいます。

その人の好みによりますね。私は生粋のWindowsユーザーでGUI操作大好きですが、Linuxが好きな人からすればコマンドライン操作の方が使い勝手がよく思うでしょう。

>> データベースの知識のない初学者が今からMySQLを勉強するにあたってお勧めのサイトがあればご紹介ください。

正確な情報を求めるなら公式マニュアルが一番です。

MySQL 5.1 リファレンスマニュアル
http://dev.mysql.com/doc/refman/5.1/ja/

これが読みにくく感じるならば、噛み砕いた説明をしてくれる入門者向けのサイトが手助けになるでしょう。

DBOnline - MySQLの使い方
http://www.dbonline.jp/mysql/

そして実際にPHPから扱うときは最初述べたとおり「PDOクラス」を使います。

PHPManual - PHP Data Object
http://php.net/manual/ja/book.pdo.php

以下は私の記事になりますが、一度は読んでいただければ幸いです。

Qiita - PHPでデータベースに接続するときのまとめ
http://qiita.com/mpyw/items/b00b72c5c95aac573b71

Qiita - ファイルオープンモードに関するマニュアルの記述は間違っている
http://qiita.com/mpyw/items/3adcec3c66e515895b08
    • good
    • 0
この回答へのお礼

PHPをある程度勉強してものになってからデータベースなどを
勉強したほうが良いというアドバイスありがとうございます。

ただPHPの勉強もすぐに壁にぶつかり
次にどうしてよいのか分からない状況なので
強引にMYSQLの勉強を始めてみました。

データベースの知識がなく
多くのmySQL初学者サイトで説明されている
コマンドプロンプトとXamppの
phpMyAdminの仕様が異なり
途方にくれていたのですが
少し理解できるきっかけになるサイトも見つけることができました。

http://www.php-labo.net/tutorial/mysql/

phpMyAdminは新しいバージョンのmySQLではないのですね。

とりあえず新たな壁にぶつかるまで
mySQLの勉強を進めていき
また先に進めなくなったら
PHPの勉強にに戻ろうと思います。

貴重な情報ありがとうございました。

お礼日時:2014/02/11 19:34

>お近くのブックオフさんみたいな古本屋さんで、


> 「PHP+MySOL」のCD付入門本を入手して、通しで読むほうが良いと思います。
それこそ
>バージョン差異でつまづくこともあるでしょう。
だからやめるべき。
今更古いバージョンのを読んでも意味がない。
PHPはバージョン間でだいぶ作法が違う。
(互換性のために古い作法でも記述できるか)

>mySQLの数年前と最新版のバージョンの違いだと思うのですが、
>仕様ががなり違うのか
>今更コマンドプロンプト操作での勉強は効率がよいのかなと
>不安になってしまいます。
SQLを書けなくてPHP側はどうする気?

>もちろんコマンドプロンプトでDB操作するからプロい、GUIだとアマいという事ではありません。
>どちらにもメリットがあるからどちらの方法も提供されているというだけです。
普通に仕事でOracleとかMySQLなど使うけどまぁデータの中身を見るときにはGUIツール使っちゃうからね。
それでも内部結合とか外部結合する場合はSQLを直接書いてデータ確認したりする。
GUIツールは簡単な検索にはよく利用するけど複雑な条件などになるとできなかったり設定がめんどくさくなるからSQLを直接書いた方が楽。
    • good
    • 0
この回答へのお礼

本屋さんではインターネットの初学者と同じような内容の物ばかりで結局これという本はありませんでした。
PHPの本も2冊買ってみているのですが
途中からいきなり難しくなり
結局はそこで行き詰ってしまいます。
GUIツールという言葉を教えていただいたので
また調べて勉強してみようと思います。
ありがとうございました。

お礼日時:2014/02/11 19:20

> それともある程度のレベルまでPHPを勉強して


> シンプルでもある程度のPHPプログラムが自分で書けるようになって
> それからmySQLの勉強を始めたほうが良いのでしょうか?
> ちなみにデータベース自体の知識は全くありません。
こっちが良いと思います。あくまで個人的な意見です。

> mySQLの数年前と最新版のバージョンの違いだと思うのですが、
> 仕様ががなり違うのか
> 今更コマンドプロンプト操作での勉強は効率がよいのかなと
> 不安になってしまいます。
mySQLへのアクセス方法が複数あると考えれば良いでしょう。
これは福岡から東京にいくときに徒歩でトホホと行くのと、新幹線でビュワーンと行くのと、飛行機でドヒューンと行くのの違いです。
徒歩は大変だけどお金がかからない・ふらっと寄り道できるというメリットがありますね。
飛行機最高、徒歩最悪、という訳ではありません。
もちろんコマンドプロンプトでDB操作するからプロい、GUIだとアマいという事ではありません。
どちらにもメリットがあるからどちらの方法も提供されているというだけです。

mySQLの前にまずDBMSとは何ぞやというのを呼び出しもとのPHPと絡めて概念をつかむのが良いでしょう。
つまり、DBMSとはそれ単体ではデータが整然(イメージとしてはExcelの表みたいなん)と並んでいるだけであり、
そのデータを探す、入れる、消すという操作を行う別の何かが無いと何の意味も持たないものであり、
別の何かというのはあなたが作ったPHPのプログラムである、という点から、
PHPからDBを突っつくときにどうするか(SELECT、INSERT、UPDATE、DELETE)の基本を押さえるべきでしょう。
その上で、mySQLというDBMSはそれをどう実現しているかというのを調べていくのが良いと思います。

後は、公式の情報をじっくり読み込むのが良いでしょう。
http://www.php.net/manual/ja/
http://dev.mysql.com/doc/refman/5.1/ja/index.html
最初はひょっとしたら全く意味が分からないかも知れません。
しかし、最初から最後まで一通り読んだ後でもう一度PHPでプログラムを組んでみると
今まで漠然と組んでいたプログラムの中身が理路整然と理解できるようになるでしょう。
mySQLは5.5以上用の日本語マニュアルが無いので5.1用のものを紹介しました。
    • good
    • 0
この回答へのお礼

PHPやMYSQLなどの勉強はすぐに何かの結果や成長が
出るのではないため先の見えない漠然とした試練のような
作業になっているのが現状です。
プログラムの勉強をしたことがないので
難しい専門用語や知らない単語などがでてくると
そこで挫折してしまいそうになりますが
頑張ろうと思います。
アドバイスありがとうございました。

お礼日時:2014/02/11 19:17

サイトで情報収集はバージョン差異でつまづくこともあるでしょう。



お近くのブックオフさんみたいな古本屋さんで、
「PHP+MySOL」のCD付入門本を入手して、通しで読むほうが良いと思います。
    • good
    • 0
この回答へのお礼

本屋さんで見たMYSQLの本は殆どインターネットで検索できるような以前のバージョンのものばかりで
これといった本は見つけることができませんでした。
とにかくアドバイスありがとうございました。

お礼日時:2014/02/11 19:12

覚えること、理解すべきことは山ほどあります。


なので、自分ができそうなところから順番に時間をかけて学んでゆくしかないでしょう。
    • good
    • 0
この回答へのお礼

頑張ってもすぐに結果が返ってこない作業なので
本当に長い道のりになると思います。
途中で投げ出さないよう頑張ろうと決意しました。
ありがとうございます。

お礼日時:2014/02/11 19:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!