hayateasdf's blog

Unity,C#, javascript,C++,python,batなど

PHP始めて2日目でかなり理解できた本

phpを勉強してます。2日目です。
とりあえず初心者にやさしいということで下記の本を読んで勉強してます。

いきなりはじめるPHP~ワクワク・ドキドキの入門教室~

いきなりはじめるPHP~ワクワク・ドキドキの入門教室~

1日目で全て読み、2日目で全て実行できてしまいました。
これだけでphpとデータベース(mysql)がわかってしまうというとても素晴らしい本です。

難しい部分が無く、説明の通り、図の通り進めれば簡単にできてしまいます。ページ数もそれほどないしフォントも大きめでやってるだけでサクサク進んでいけるのでphp初心者の方にはぜひ購入をお勧めします。

php作っていて何個か処理がかぶっているところがあったので適当にクラス化してみました。(このやり方があってるかわかりません)

<?php
class c_db
{
	private $link;
	private $dsn = 'mysql:dbname=phpkiso;host=localhost';
	private $username = 'root';
	private $password = '';
	private $stmt;
	// public function __construct($dsn, $username, $password)
	// {
	// 	$this->dsn = $dsn;
	// 	$this->username = $username;
	// 	$this->password = $password;
	// }
	public function __construct()
	{
		$this->connect();
	}
	public function __destruct()
	{
		if(!empty($this->link))
		{
			$this->link = null;
			print 'success end';
		}
	}
	private function connect()
	{
		try
		{
			$this->link = new PDO($this->dsn, $this->username, $this->password);
			$this->link->query('SET NAMES utf8');
		}
		catch(Exception $e)
		{
			$this->link = null;
		}
	}
	public function sql($sql, array $data)
	{
		$this->stmt = $this->link->prepare($sql);
		$this->stmt->execute($data);
	}
	public function table(array $key)
	{
		if(empty($this->stmt))
		{
			return;
		}
		print '<table border>';

		print '<tr>';
		foreach ($key as $s)
		{
			print '<td>'.$s.'</td>';
		}
		print '</tr>';
		while(1)
		{
			$rec = $this->stmt->fetch(PDO::FETCH_ASSOC);
			if($rec == false)
			{
				break;
			}
			print '<tr>';
			foreach ($key as $s)
			{
				print '<td>'.$rec[$s].'</td>';
			}
			print '</tr>';
			print '<br />';
		}
		print '</table>';
	}
	public function exist()
	{
		return !empty($this->link);
	}
};

	// テスト
	$p = new c_db();
	if($p->exist())
	{
		$p->sql('SELECT * FROM anketo WHERE ?',
			array('1'));
		$p->table(array('code', 'nickname', 'email', 'goiken'));
	}
	else
	{
		print 'サーバーエラー';
	}
?>

基本的に上記の本とphpのマニュアルを見て(http://php.net/manual/ja/language.oop5.magic.php)混ぜ合わせてみました。
処理を日本語で書くと,
『phpkisoというデータベースからanketoというテーブルの中の'code, nickname, email, goiken'をを持ってきてhtmlのテーブルに表示させる』
って感じです。めんどくさい部分がデフォルト引数になってるなんてよくあることですよw。