変数へ mysql 検索結果の格納

PHP で MySQL を実行する時には
mysql_query() で実行するのですが
SELECTを実行する時には、一度変数に保存します
ちなみに、変数に格納するという方法は、
web api を使ってサイト構築したり、マッシュアップするときにも使われる方法です
今回は
$recordSet = mysql_query(‘SELECT * FROM my_items’);
というように
$recordSet に格納しています
でも、格納しただけでは使えないので
mysql_fetch_assoc() を使います
変数に格納しただけだと
int i=1;
と宣言しただけと同じなので、これだけでは無意味です
この mysql_fetch_assoc() ですが
$data = mysql_fetch_assoc($recordSet);
というように、別の変数にデータを入れるようにします
ちなみに、PHPの場合、
$data のように、
C , java などのように
int とか long とかで宣言せずとも変数を使えたりします
逆に、javascript のようにスクリプト関連でも
var を使って変数宣言するということもありますので
逆にわかりにくいのかもしれませんが….
少々ずれてしまいましたが
解説に戻ると
$recordSet = mysql_query(‘SELECT * FROM my_items’);

変数に
選択するDBテーブルを格納します
今回なら $recordSet に格納しています
$data = mysql_fetch_assoc($recordSet);

検索結果を
変数に格納します
今回なら $data に格納しています
最後に
echo $data[‘item_name’];

一番最初の
データが表示されます
echo $data[‘item_name’];
のところは、配列なので、
() ではなく [] で囲っているところに注意しましょう

スタイルクラスの追加と削除


を参考に jQuery の勉強を始めました
java script をある程度行っているなら
比較的覚えやすいと思います
最近では スマホサイト作成に jQuery Mobileを使うため
覚えておくと役立ちそうです
今回はちょっとメモしたかったのが
スタイルクラスの適用する
addClass メソッド
そして
スタイルクラスを除外する
removeClass メソッドです
<style type=”text/css”>
.sample{
CSS 設定
};
<style>
の設定を
$(‘li.js’).addClass(‘sample’);
で適用
$(‘li.js’).removeClass(‘sample’);
で除外となります
そして、マウスクリックのときに使えそうなのが
toggleClass メソッドです
これは最初に記述すると適用
次は除外
というように交互に作動するものです
$(‘li.js’).toggleClass(‘sample’);
で適用
$(‘li.js’).toggleClass(‘sample’);
で今度は除外となります
ちょっとわかりにくいですが、あとあと使うことが多くなりそうです

php でDB接続

PHP + Mysql のつまづくこともあるので、メモしていきます
mysql で作成したDBへ PHPからアクセスするには
mysql_connect(‘ホスト名’,’ユーザ名’,’パスワード’);
でアクセスします
ほとんどの場合、ここにエラー処理も加えるので
mysql_connect(‘localhost’,user’,’passwd’) of die(mysql_error());
というようにして
使います
次に、DBを選択する場合ですが
mysql_select_db(‘データベース名’) or die(mysql_error());
とします
続いて、DBの文字コード設定です
ほとんどの場合UTFー8なので
mysql_query(‘SET NAMES UTF8’);
ちなみに、文字コード設定を間違えると入力したもじが
文字化けします
私は NAMES を NAMEとして文字化けしたことがありました…
修正がかなり面倒でした
そして DB へ接続した状態で SQL を実行するときには
mysql_query(’実行するsql’) or die(mysql_error());
となります
例えば、INSERT を使いたいなら
mysql_query(‘INSERT …..’) or die(mysql_error());
というようになります
ちなみに、” で囲っているので、sql を実行する時には
“”を使うようにします
例えば
INSERT INTO my_items SET item_name=‘もも’;
をじっこうしたいときに、このままだとエラーなので、
INSERT INTO my_items SET item_name=”もも”;
というように “” で囲むようにします

phpMyAdmin でのバックアップ

今回は phpMyAdmin で SQLのバックアップについてです
phpMyAdmin へログインして
DBを選択して
エクスポートをクリックします
エクスポート方法の 詳細をクリックし
出力をファイルに保存する
になっていることを確認し
実行をクリックします
すると、
データベース名.sql
というファイルで保存されます
とりあえず、実際に復元できるかを実験してみます
まず、作成したDBを削除します
削除完了したら、今度は復元です
もう一度同じDB名で作成し
称号順序を
utf8_general_ci
を選択します
次に、インポートで、さきほど保存した SQLファイルを指定して
実行すれば、DBが復元できます
今回、参考にしたPHPの書籍

では
DBを復元する場合、手動で行う必要があるとかかれていましたが
Linux を使っているなら
sql ファイルをコマンドを使うことで実行することもできます
参考サイトとして
サーチマンさんのサイト
ファイルにsqlを書いて、そのファイルを実行する
に掲載されていましたので
Linux 環境ならこちらの方法での復旧もできます
また、phpMyAdmin では、環境にもよりますが
扱えるファイルの大きさに上限があるようなので、
コマンドによる復旧も覚えておいたほうがよさそうです

ubuntu へのPhoneGap インストール

PhoneGapで「ハイブリッドアプリ」を作ろう
という記事をみたので、試しに使ってみたいのですが
なにぶん、開発環境が ubuntu 32bit なので、
32bit ubuntu でもできるか検索してみました
AndroidアプリのためのPhoneGap環境
にその方法が掲載されていました
今週は時間があまりありませんが
現在取りかかっている facebook アプリの勉強でも活用できるかもしれません
これで、facebook アプリをネイティブアプリにできれば面白いと思います

バリューコマースへの登録にはアクセス数が必要

バリューコマース登録のためには
ブログが必要となります
ブログはFC2であるけど
問題は登録するときに記入するアクセス数の記入
アクセス数が一日どのくらい必要かを調べる必要があるということで
さっそくFC2ブログでの
アクセス解析を調べることに
まずは検索で
fc2 アクセス数 取得で
検索し
http://help.fc2.com/analysis/manual/Home/secchi.html
に載っていたので、これを元に設置してみました
アフィリエイト関連の場合、審査があるため、
ある程度の内容を作成しないと審査を通過できない可能性があるようです

ASで名前変更

SELECT i.item_name ,SUM(c.count) FROM my_items i, carts c WHERE i.id=c.item_id GROUP BY c.item_id;
これを実行すると
SUM(c.count)
という名前で表示されますが
意味がわかりにくいです
そんなときに使うのが AS
これを使うことで
出力される名前を
SUM(c.count) から変更できます
ということで
SELECT i.item_name ,SUM(c.count) AS sales_count FROM my_items i, carts c WHERE i.id=c.item_id GROUP BY c.item_id;
とすれば
SUM(c.count) から
sales_count というように名前が変更され出力されます
(ちなみに、表示だけで、実際のデータは変わりません)
これでわかりやすくなります
とくにこまらないのなら、あまり使わないかもしれませんが

DISTINCT BETWEEN IN LIMIT

DISTINCT は 重複をなくす
SELECT item_id FROM carts
を実行すると、全部でてきますが
SELECT DISTINCT item_id FROM carts;
とすれば重複するID がない状態で表示されます
お次に
BETWEEN
これは~の間という使い方をします
SELECT * FROM `my_items` WHERE price>=50 AND price<150; だと 50円以上、150円以下のものがでます でもBETWEENを使うともっと簡単にかけます SELECT * FROM my_items WHERE price BETWEEN 50 AND 149;
これで 50 ~ 149 までの指定になります
で IN の解説
INは複数の値を一気に指定したい場合に使用します
1と3を取り出すには
SELECT * FROM my_items WHERE id=1 OR id=3;
でしたが
INを使えば
SELECT * FROM `my_items` WHERE id IN (1,3);
でOKです
今回は少ないのであまり効果が実感できませんが、後々役立ちます
LIMIT は件数制限をかけます
何万件もあると、検索するのが大変になってくるので
LIMITをつけて制限します
SELECT * FROM carts LIMIT 2;
なら2件に絞れます
また、範囲指定も加納です
SELECT * FROM carts LIMIT 30.10;
とすれば31~40のみに絞り込みできます
30からにはならず、指定した次の番号からになるので注意です
顧客名簿とかの管理とかに使うこともあります
使い方は LIMIT 開始位置, 件数
となります
30,40 というように範囲指定じゃないので注意しましょう
ちなみに、30としたのに31からなのは
データベースなどの配列は0からカウントするからです
プログラムを組むときにもこのルールが摘要されるので
注意しましょう

外部結合(LEFT JOIN,RIGHT JOIN)

UPDATE `carts`set item_id=1,count=2 WHERE id=6;
を実行して
SELECT i.item_name, SUM(c.count) FROM my_items i , carts c WHERE i.id=c.item_id GROUP BY c.item_id;
を実行して、もし値が0だとデータが表示されない
この場合、0を表示するには外部結合を使います
ちなみに、いままで実行したのは内部結合で
こちらは
両方のテーブルにデータが存在していないと結合されないので
データがでてこない
外部結合なら、一方のテーブルにデータがあれば必ず表示されるというもの
ゲーム開発とかには使うかも
では、今度は外部結合してみます
SELECT i.item_name, SUM(count) FROM my_items i LEFT JOIN carts c ON i.id=c.item_id GROUP BY c.item_id;
とすると、0で表示されなかった
ブルーベリー がNULLで表示されます
外部結合には
LEFT JOIN … ON というように使います
書式で書くと
SELECT FROM … テーブル1 LEFT JOIN テーブル2 ON 結合条件 WHERE …
テーブル1はメインなので、全部表示
そのうえで
テーブル2で追加データがあれば、表示するというもの
つまり、今回の例なら
FROM my_items i
なので、
my_items は全部表示
LEFT JOIN carts c
なので、
差分で
carts を表示
差分条件は
ON i.id=c.item_id GROUP BY c.item_id;
なので、
id の値が同じものということになります
ちなみに、RIGHT JOIN というのもあるけど、
要は基準が逆になって右がメインになる
ということです