PhpでMySqlを使う

45,547 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
45,547
On SlideShare
0
From Embeds
0
Number of Embeds
21
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

PhpでMySqlを使う

  1. 1. PHP で M y SQL を使う ウェブアプリケーション勉強会 担当:兼山
  2. 2. 前回までにやったこと <ul><li>Apache/PHP のインストールとプログラミング </li></ul><ul><li>MySQL のインストールと SQL 文の紹介 </li></ul>
  3. 3. 今日やること <ul><li>MySQL と PHP を組み合わせて使う例題として掲示板を作ってみようと思います。 </li></ul>
  4. 4. PHPで掲示板を作る <ul><li>まだやってないこと </li></ul><ul><ul><li>HTML からフォームの値を受け取る </li></ul></ul><ul><ul><li>PHP で MySQL にデータを挿入する* </li></ul></ul><ul><ul><li>PHP で MySQL からデータを取得する* </li></ul></ul><ul><ul><li>PHP で HTML を出力する。 </li></ul></ul>
  5. 5. 必要なこと <ul><li>モデルを決めること( MySQL ) </li></ul><ul><li>外観を決めること( PHP ) </li></ul><ul><li>どうやって実現するか( MySQL/PHP ) </li></ul>
  6. 6. データベース設計(モデリング?) <ul><li>スレッドモデル </li></ul><ul><ul><li>スレッドがあってそこにコメントが連なる。 </li></ul></ul><ul><ul><li>身近な(?)例: 2 ちゃんねる , mixi </li></ul></ul><ul><ul><li>(例示) </li></ul></ul>
  7. 9. データベース設計 <ul><li>モデルをテーブルに写し取る </li></ul><ul><ul><li>Thread table </li></ul></ul><ul><ul><li>Comment table </li></ul></ul>
  8. 10. Thread tableに必要なもの <ul><li>(ID) </li></ul><ul><li>タイトル </li></ul><ul><li>立てた人 </li></ul><ul><li>説明 </li></ul><ul><li>立てた日 </li></ul>
  9. 11. Comment tableに必要なもの <ul><li>(ID) </li></ul><ul><li>(どのスレッドに対する発言なのか) </li></ul><ul><li>書いた人の名前 </li></ul><ul><li>内容 </li></ul><ul><li>書いた日付 </li></ul>
  10. 12. データベース準備 <ul><li>Create database bbs; </li></ul>
  11. 13. SQL例 <ul><li>CREATE TABLE `thread` ( </li></ul><ul><li>`id` int(10) unsigned NOT NULL auto_increment, </li></ul><ul><li>`title` varchar(100) NOT NULL, </li></ul><ul><li>`author` varchar(100) NOT NULL, </li></ul><ul><li>`description` text, </li></ul><ul><li>`date` timestamp NOT NULL default CURRENT_TIMESTAMP, </li></ul><ul><li>PRIMARY KEY (`id`) </li></ul><ul><li>) ENGINE=InnoDB DEFAULT CHARSET=utf8 </li></ul><ul><li>CREATE TABLE `comment` ( </li></ul><ul><li>`id` int(10) unsigned NOT NULL auto_increment, </li></ul><ul><li>`thread_id` int(10) unsigned NOT NULL, </li></ul><ul><li>`author` varchar(100) NOT NULL, </li></ul><ul><li>`content` text NOT NULL, </li></ul><ul><li>`date` timestamp NOT NULL default CURRENT_TIMESTAMP, </li></ul><ul><li>PRIMARY KEY (`id`), </li></ul><ul><li>FOREIGN KEY (thread_id) REFERENCES thread(id) </li></ul><ul><li>ON DELETE CASCADE </li></ul><ul><li>) ENGINE=InnoDB DEFAULT CHARSET=utf8 </li></ul>
  12. 14. SQLの説明 <ul><li>`id` int(10) unsigned NOT NULL </li></ul><ul><ul><li>“ ユニークであること”を実現する手っ取り早い方法 </li></ul></ul><ul><ul><li>auto_increment : ID に自動で番号を当ててくれる </li></ul></ul><ul><li>`date` timestamp NOT NULL default CURRENT_TIMESTAMP, </li></ul><ul><ul><li>DB に書き込んだ時間を教えてくれる </li></ul></ul><ul><li>PRIMARY KEY (`id`) </li></ul><ul><ul><li>Id のユニークさを保障してくれる </li></ul></ul>
  13. 15. SQLの説明 <ul><li>FOREIGN KEY (thread_id) REFERENCES thread(id) </li></ul><ul><li>ON DELETE CASCADE </li></ul><ul><ul><li>無いスレッドには書き込めない。(外部制約) </li></ul></ul><ul><ul><li>スレッドが消えたらコメントも消してくれる </li></ul></ul>
  14. 16. データベースができたら <ul><ul><li>PHP で MySQL にデータを挿入する* </li></ul></ul><ul><ul><li>PHP で MySQL からデータを取得する* </li></ul></ul><ul><ul><li>↓ </li></ul></ul><ul><ul><li>mysql_connect() を使う? </li></ul></ul>
  15. 17. MySQL/PHP <ul><li>// データベースとの接続を確立 </li></ul><ul><li>$link = mysql_connect(&quot;localhost&quot;, &quot;root&quot;, “XXXX&quot;) </li></ul><ul><li>or die(&quot;mysql_connect failed.&quot;); </li></ul><ul><li>mysql_query(&quot;SET CHARACTER SET utf8;&quot;); </li></ul><ul><li>mysql_selectdb(&quot;bbs&quot;,$link); </li></ul>
  16. 18. MySQL/PHP <ul><li>$result = mysql_query('SELECT id,title,description FROM thread'); </li></ul><ul><li>if (!$result) { </li></ul><ul><li>die(' クエリーが失敗しました。 '.mysql_error()); </li></ul><ul><li>} </li></ul><ul><li>// 返ってきた結果を一行ずつ $row に取り出す。 </li></ul><ul><li>while ($row = mysql_fetch_assoc($result)) { </li></ul><ul><li>echo $row['id']; </li></ul><ul><li> } </li></ul>
  17. 19. くソースリーディング <ul><li>みんなでしょうもないコードを読もう!! </li></ul>
  18. 20. bbs.php <ul><li>とりあえずサンプル作っときました </li></ul><ul><ul><li>bbs.php  スレッド一覧 </li></ul></ul><ul><ul><li>show.php  スレッドの表示 </li></ul></ul><ul><ul><li>http://pcod.no-ip.org/bbs.zip </li></ul></ul>
  19. 21. サンプルに機能を追加しようぜ! <ul><li>このサンプルのやばいところ </li></ul><ul><ul><li>データの正当性のチェック( validation )をしてねえよ </li></ul></ul><ul><ul><li>HTML タグが使えねえよ </li></ul></ul><ul><ul><li>スレッド一覧にスレッドごとのレスのカウントが表示されねえ </li></ul></ul><ul><ul><li>全文検索できねえ </li></ul></ul><ul><ul><li>つまんねえ </li></ul></ul>
  20. 22. もっともっと <ul><li>そもそもこの設計はありなの? </li></ul><ul><li>脆弱性の問題 </li></ul><ul><li>MySQL とのコネクションは毎回作っていいの? </li></ul>
  21. 23. まとめ <ul><li>MySQL でのテーブル設計 </li></ul><ul><li>言語からデータを出し入れする </li></ul><ul><li>HTML とプログラムの間の通信 </li></ul><ul><li>これらはそれぞれいろいろなやり方があるので調べてみてください。 </li></ul>

×