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();
コピーできました!