mySQL

mySQL+PHPの備忘録

catch130508

世間はGWデスね。こういう期間に勉強したり出来たらイイですよね〜。。。
独身の皆さん、そういう時間が取れるのも今のうちデスヨ。
子どもいると、「遊んで」と言われるか何かの曲を大声で歌っているか、何やかやと煩くて勉強なんてできませんからねぇ。

で、今回の記事はGW中に私の知識が飛ばないように書いたmySQLに関するコトです。

仕事のコトで、4月上旬からDBで運用できないかとチクチクやっていまして、やーっと完成したワケです。
GW突入前日にデータ流し込むだけ流して現場に放り投げたので、休み明けに何か問題発覚して修正するときに、SQLとか忘れていると困るので備忘録として休み中からちくちくまとめていたものです。

PHPでSQL時の流れ

mysql_query(SQL文)

成功すれば resource()が渡される

渡されたリソースを関数に渡す
例えば mysql_fetch_assoc() 各フィールドの値を連想配列の形にして返してくれる
など・・・

エラーが出たらまず var_dump() !!

var_dump($result);
 上記を実行して false が出たら結果が取得できていないということ。
mysql_error();
 上記を実行して、エラーメッセージ・エラー番号が表示されるから、マニュアル参照。

htmlspecialchars と mysql_real_escape_string の違い

  • mysql_real_escape_string|DBに渡すとき
  • htmlspecialchars|サイトに表示するとき

REPLACE(カラム名,'置換対象文字','置換文字')  対象文字にあいまい検索%は使えないらしい。

ビューって便利

ビュー作るのは凄く簡単で便利(・∀・)♪
だけど、複雑なビュー作った後、初心者はSQLメモっておいた方が良いかと思いました…。
ビュー作った後の生成した時のSQLが参照できず、初心者にはツラかった…orz

CREATE VIEW ビュー名 (カラム名・・・) AS SELECT * FROM テーブル名 WHERE 条件 ;

phpにSQL書いていくとすごーく長くなることがあります。複数テーブルを結合したいときとか。
そういうときに、ビュー作っちゃえばphpでのソースコードがエコ!

ちなみに私がやったビューのソースの簡略版を晒そう。初めてのSQLなので、きっとヤバい点が沢山あるはず。

CREATE VIEW itemList(
                                        item_id,
                                        system_name,
                                        staff_name,
                                        status_name,
                                        profit,
                                        stockID) 
AS 
SELECT 
     item_id,
     system_name,
     staff_name,
     sell_price - buy_price as profit, //ここで減算
     status_name,
     CONCAT(     staff.staff_code, //ここから結合
               CASE WHEN MOD(buy_price,10000) = 0 //数値を簡単な数字に変換というか処理
                    THEN concat((buy_price DIV 10000),33)
                    WHEN MOD(buy_price,1000) = 0
                    THEN concat((buy_price DIV 1000),22)
                    WHEN MOD(buy_price,100) = 0
                    THEN concat((buy_price DIV 100),11)
                    WHEN MOD(buy_price,100) != 0
                    THEN concat((buy_price DIV 10),1)
                    ELSE NULL
                    END) as stockID
FROM
     item,staff,system,status
WHERE
     item.staff_id = staff.staff_id AND
     item.system_id = system.system_id AND
     item.status_id = status.status_id;

※実際はもっとカラム名とか多いです…ビューって本当便利だわ…

検索結果でページングする時は、検索ワードをセッションに格納して渡す

リレーションする時の条件文a=b は、主キーと他テーブルの主キー(外部キー)で繋ぐ

結合・リレーション・連結、本によって違う言い方言い回しにかなり戸惑う

これについては後日まとめようぞ。
→まとめました!【mySQL】結合を自分なりにまとめてみた。

  • この記事を書いた人
アバター画像

サオリサン

WEB制作のディレクター・制作・運営支援をしてます(フリーランス&会社員)。アクセス解析してサイト改善するのが好き。

-mySQL
-,