データの取得

queryメソッド

1回のみのSQL文をデータベースへ送信するときには「queryメソッド」を使います。

$sql = 'SELECT * FROM blog';
$sth = $db->query($sql);

データの取得

データベースに格納されている値を取り出すには「fetchメソッド」を使います。

$sql = 'SELECT * FROM blog';
$sth = $db->query($sql);

$row = $sth->fetch();
	print($row['id'])."<br>";
	print($row['usr'])."<br>";
	print($row['tweet'])."<br>";
	print($row['time'])."<br>";
require_once('config.php');

try{
	//データベースに接続
	$db = new PDO('mysql:host='.$host.';dbname='.$dbname.';charset=utf8mb4', $username, $password);

	//実行したいSQL
	$sql = 'SELECT * FROM blog';

	//SQL準備
	$sth = $db->query($sql);

}catch(PDOException $e){
	die('エラーメッセージ:'.$e->getMessage());

}finally{
	//データベース接続切断
	$db = null;
}

while ($row = $sth->fetch()){
	print($row['id'])."<br>";
	print($row['usr'])."<br>";
	print($row['tweet'])."<br>";
	print($row['time'])."<br>";
	print "<br>";
}

prepareメソッド

SQL文の値だけ変えるような場合は「prepareメソッド」を使います。

そして「executeメソッド」でクエリを実行します。

クエリとはデータベースに対する「お問い合わせ」のことで、データベースからデータを検索してほしいときに使います。

$sql = 'SELECT * FROM blog WHERE tweet LIKE ?';
$keyword = 'こんにちは';
$sth = $db->prepare($sql);
$sth->execute(array($keyword));

別の書き方の例です。

$sql = 'SELECT * FROM blog WHERE tweet LIKE :keyword';
$keyword = 'こんにちは';
$sth = $db->prepare($sql);
$sth->execute(array(':keyword'=>$keyword));

bindValueを使って書いた場合です。

$sql = 'SELECT * FROM blog WHERE tweet LIKE :keyword';
$keyword = 'こんにちは';
$sth = $db->prepare($sql);
$sth->bindParam(':keyword', $keyword, PDO::PARAM_STR);
$sth->execute();

prepareメソッドで用意したSQL文の発行

require_once('config.php');

try{
	//データベースに接続
	$db = new PDO('mysql:host='.$host.';dbname='.$dbname.';charset=utf8mb4', $username, $password);

	//実行したいSQL
	$sql = 'SELECT * FROM blog WHERE tweet LIKE ?';

	//SQL準備
	$sth = $db->prepare($sql);

	//検索するキーワード
	$keyword = 'こんにちは';

	//実行
	$sth->execute(array($keyword));

}catch(PDOException $e){
	die('エラーメッセージ:'.$e->getMessage());

}finally{
	//データベース接続切断
	$db = null;
}

while ($row = $sth->fetch()){
	print($row['id'])."<br>";
	print($row['usr'])."<br>";
	print($row['tweet'])."<br>";
	print($row['time'])."<br>";
	print "<br>";
}
require_once('config.php');

try{
	//データベースに接続
	$db = new PDO('mysql:host='.$host.';dbname='.$dbname.';charset=utf8mb4', $username, $password);

	//実行したいSQL
	$sql = 'SELECT * FROM blog WHERE tweet LIKE :keyword';

	//SQL準備
	$sth = $db->prepare($sql);

	//検索するキーワード
	$keyword = 'こんにちは';

	//実行
	$sth->execute(array(':keyword'=>$keyword));

}catch(PDOException $e){
	die('エラーメッセージ:'.$e->getMessage());

}finally{
	//データベース接続切断
	$db = null;
}

while ($row = $sth->fetch()){
	print($row['id'])."<br>";
	print($row['usr'])."<br>";
	print($row['tweet'])."<br>";
	print($row['time'])."<br>";
	print "<br>";
}
require_once('config.php');

try{
	//データベースに接続
	$db = new PDO('mysql:host='.$host.';dbname='.$dbname.';charset=utf8mb4', $username, $password);

	//実行したいSQL
	$sql = 'SELECT * FROM blog WHERE tweet LIKE :keyword';

	//SQL準備
	$sth = $db->prepare($sql);

	//検索するキーワード
	$keyword = 'こんにちは';

	//ユーザからの入力情報をSQL文に代入
	$sth->bindParam(':keyword', $keyword, PDO::PARAM_STR);

	//実行
	$sth->execute();

}catch(PDOException $e){
	die('エラーメッセージ:'.$e->getMessage());

}finally{
	//データベース接続切断
	$db = null;
}

while ($row = $sth->fetch()){
	print($row['id'])."<br>";
	print($row['usr'])."<br>";
	print($row['tweet'])."<br>";
	print($row['time'])."<br>";
	print "<br>";
}

書き方は3通りあります。

$sql = 'SELECT * FROM blog WHERE id > ? AND id < ?';
$num1 = 2;
$num2 = 5;
$sth = $db->prepare($sql);
$sth->execute(array($num1, $num2));
$sql = 'SELECT * FROM blog WHERE id > :num1 AND id < :num2';
$num1 = 2;
$num2 = 5;
$sth = $db->prepare($sql);
$sth->execute(array(':num1'=>$num1, ':num2'=>$num2));
$sql = 'SELECT * FROM blog WHERE id > :num1 AND id < :num2';
$num1 = 2;
$num2 = 5;
$sth = $db->prepare($sql);
$sth->bindParam(':num1', $num1, PDO::PARAM_INT);
$sth->bindParam(':num2', $num2, PDO::PARAM_INT);
$sth->execute();

コピーできました!