Home > 梅原 > PHP 『 超 』 初心者勉強会(PHPでMySQL) 5回目に参加して来ました。

PHP 『 超 』 初心者勉強会(PHPでMySQL) 5回目に参加して来ました。

20100627
Category:梅原 /Tags:

5回目。実は4回目も参加したんだけど、大遅刻して、全体の3割くらいしか話が聞けなくて、ちゃんと理解できていなかったので記事にしませんでした。今度から(なるべく)ちゃんと出ます。たぶん。

今回はいよいよphpからsql文を投げる話。
と言っても、まだローカル環境の連想配列がとれただけの段階だけど。
それでも、なにか始まって来ました感が出て来て嬉しい。

PHPって、いろんな処理をWebに最適化して簡略に書ける言語で、それが一番の売りみたいなんだけど、入門編の学習者にとっては「そこで何が省略されているか」を想像して補完する必要があるように感じた(今更)。
特にプログラムを書くこと自体の初心者のための学習用のコードと、現場で書くようなコードでは相当差がありそう。
例えば

//	MySQLに接続する
if($con = mysql_connect($host,$user,$pass)){

これは、いろんな処理がずいぶん挟まっているはずだなーすげーなー、とか。

ところで、この「mysql_connect($host,$user,$pass)」の部分。PHPからMySQLに接続して返事を待つわけだから「どれくらい待つんですか?」と聞いたら。「返事が来るまで」との回答。返事が来るまでは、それ以降の処理が全く進まないらしい。
もし、MySQLの処理があまりにもかかるようだと、PHPの処理時間がかかりすぎるという判断でアパッチ側からPHP自体が止められちゃうとのこと。なるほど。

<?php

$host = 'localhost';
$user = 'sample';
$pass = '123456';
$db   = 'sample';

/*
if文の中のmysql_query()とかはsqlから返事があるまで
PHPはずっとその段階で止まっている。
もし、mysqlの処理が1分とかかかるような場合は、
アパッチにPHPの処理が切られちゃうんじゃないかなー
*/
//	MySQLに接続する
if($con = mysql_connect($host,$user,$pass)){
	echo 'OK<br/>';
}else{
	echo 'NG<br/>';
	exit;
}

//	データベースの選択
if( mysql_select_db( $db, $con ) ){
	echo 'OK<br/>';
}else{
	echo mysql_error($con);
	exit;
}

//	文字コードの設定
if( mysql_query('SET NAMES utf8',$con) ){ // Shift JIS = sjis, EUC JP = ujis
	echo 'OK<br/>';
}else{
	echo mysql_error($con);
	exit;
}

//	SQLの送信
$sql = " SELECT * FROM t_title ";
//resはリソース。連想配列とかではなくて、リソース型
$res = mysql_query($sql, $con);
if(mysql_errno($con)){
	echo mysql_error($con);
	echo $sql;
}

/*
//	ループ
while($record = mysql_fetch_assoc($res)){
	var_dump($record);
	echo "<h2> {$record['title']} </h2>";
}
*/
$record = mysql_fetch_assoc($res);
//連想配列でアクセス
echo $record['title_id'];
echo ' - ';
echo $record['title'];
echo ' - ';
echo $record['insert_time'];
echo '<br />';

exit;

$val = mysql_real_escape_string($val);
$res = mysql_query($sql, $con);
$err = mysql_errno($con);
$str = mysql_error($con);
$row = mysql_num_rows($res);
$row = mysql_affected_rows($con);

関連記事:

Comments are closed.