MySQLを使う |
つまずきの解消 |
MySQLを使う |
MySQL |
接続.切断. |
○サーバに接続戻る
mysql_connect([ホスト名]:[ポート番号],[ユーザ名],[パスワード])
接続に成功すると コネクションID を返す。
例] @mysql_connect($MySQL['HOST'],$MySQL['USER'],$MySQL['PASSWORD']);
@ : warningを表示しない。
○サーバとの接続を切断
mysql_close(リソースリンクID)
リソースリンクID = コネクションID
例]
mysql_close($conn_id);
$conn_id : コネクションID
その他 |
MySQL |
データベースを使う |
○データベースの選択戻る
mysql_select_db([データベース名],[リソースリンクID])
リソースリンクIDを省略すると、一番近い前の行のリソースIDを使う。
○クエリの送信
mysql_query(]クエリの内容],[リソースリンクID])
○行数、列数を取得する
行数 mysql_num_rows(リソースリンクID)
列数 mysql_num_fields(リソースリンクID)
その他 |
MySQL |
○mysql_db_query(データベース名, SQL文);
古い命令。つぎと同じ。
mysql_select_db
mysql_query
を使う。
同じスプリクト内でのフォームデータの受信 |
$_SERVER["PHP_SELF"] |
PHP |
○<FORM ACTION="<? print($_SERVER["PHP_SELF"]); ?>" method="post">戻る
配列へデータをセットする |
PHP |
<head>
<title>配列テスト</title>
</head>
<body>
<?php
for($i=0; $i<= 10; $i++)
{
$test[]=$i."a";
}
for($i=0; $i<= 10; $i++)
{
print($i." ".$test[$i]."<br>");
}
?>
</body>
</html>
動作設定のWは小文字 |
fopen(ファイル名,'w") |
PHP |
○fopen(test.txt ,’w’);戻る
’w’は、書き込み。
カウンタ |
ログファイルを使う |
PHP |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">戻る
<html>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<head>
<title>ログファイルを使ったカウンタ</title>
</head>
<body>
<?php
$logfile = "./counter.log";
$counter = 0;
if($fn = @fopen($logfile, 'r')){
$counter = trim(fgets($fn));
fclose($fn);
}
print( ++$counter . "人目のお客様です");
if($fn = fopen($logfile, 'w')){
fwrite($fn, $counter);
fclose($fn);
}
?>
</body>
</html>
カウンタ |
PHP |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">戻る
<html>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<head>
<title>データベースMySQLを使ったカウンタ</title>
</head>
<body>
<?php
$conn_id = mysql_connect("localhost", "root", "a3h7890");
mysql_select_db("test", $conn_id);
$Buf0 = mysql_query("select number from logdata where id='counter'",$conn_id);
$Buf1 = mysql_fetch_array($Buf0, MYSQL_NUM);
//print($Buf1[0]."<br>");
$a_counter = $Buf1[0];
//print($a_counter."<br>");
print( ++$a_counter . "人目のお客様です");
mysql_query("update logdata set number = $a_counter where id = 'counter'", $conn_id);
mysql_close;
?>
</body>
</html>
読んでもわからなかったこと |
PHP |
○MySQLからデータを取り出す場合戻る
mysql_fetch_arry([リンクID],[タイプ] )は、データベースの1行分を配列名arryという配列に格納する。オプションのタイプは、3種類の設定ができる。それらには、MYSQL_ASSOC、MUSQL_NUM、MYSQL_BOTHがある。MYSQL_ASSOCは、添字にレコード名が入る。MYSQL_NUMは、添字に0から始まる数字が入る。MYSQL_BOTHは、ASSOCとNUM両方の添字でデータが格納される。
配列名arryに格納されたデータをどのようにして利用するか。それが問題だ!
つぎのデータベースにアクセスした場合をみてみよう。
no a1 a2 a3 a4 a5 name 1 秋の田の かりほの庵の 苫をあらみ わが衣手は 露にぬれつつ 天智天皇 2 春すぎて 夏来にけらし 白妙の 衣ほすてふ 天の香具山 持統天皇 3 あしびきの 山鳥の尾の しだり尾の ながながし夜を ひとりかも寝む 柿本人麻呂
$Buf = mysql_query("select * from issyu , $conn_id);
$table = mysql_fetch_arry($Buf , MYSQL_ASSOC);
print_r($table);
を実行すると(実際にはこの3行だけでは動かない)、
Array
(
[no] => 1
[a1] => 秋の田の
[a2] => かりほの庵の
[a3] => 苫をあらみ
[a4] => わが衣手は
[name] => 天智天皇
)
$table = mysql_fetch_arry($Buf , MYSQL_NUM);の場合は、
Array
(
[0] => 1
[1] => 秋の田の
[2] => かりほの庵の
[3] => 苫をあらみ
[4] => わが衣手は
[5] => 天智天皇
)
$table = mysql_fetch_arry($Buf , MYSQL_BOTH);の場合は、
Array
(
[0] => 1
[no] => 1
[1] => 秋の田の
[a1] => 秋の田の
[2] => かりほの庵の
[a2] => かりほの庵の
[3] => 苫をあらみ
[a3] => 苫をあらみ
[4] => わが衣手は
[a4] => わが衣手は
[5] => 天智天皇
[name] => 天智天皇
)
のように格納されていることが確認できる。
このデータをプログラムの中で使いたいときは、
$tukauzo = array[1] ;
とすると、$tukauzo に「秋の田の」が入る。
それなら、配列array[1]を直接使えばいいのではないか?1行だけ利用するならそれでも大丈夫! 複数行取り込んで利用するときはそれではうまくいかない。なぜか?それは、mysql_fetch_arry()の機能による。後は、考えたり、動作を試してみて、確認しよう。