prepareとexecuteでDB操作

prepareメソッド、executeメソッドを使って安全にSQLを処理する方法を示します。
外部から来る入力値をSQLに使う場合などは、SQLインジェクションのリスクがあるため、このメカニズムでコードを実装することをオススメします。

以下はMySQLに接続してid=1のカラムを検索するサンプルです。

※以下のコードを実行するには pear-DB が必要

 

 

prepareメソッドでSQLを用意します。
そして、?の部分が後ほどexecuteで実行される際に置き換えられます。

2つもメソッドを呼び出すのが面倒だという場合は、queryに2つパラメータを渡すことで簡単に使えます。

Code:
<?php
require_once'DB.php';

$username = "dbuser";
$password = "dbpass";
$host = "dbhost";
$database = "dbname";
$db = DB::connect("mysql://$username:$password@$host/$database");

if (DB::isError( $db )) {
die($db->getMessage());
}

$sql = "select * from table where id = ?";
$sth = $db->prepare($sql);
// execute で select * from table where id = 1 を安全に実行
$result = $db->execute($sth, array("1"));

if (DB::isError( $result )) {
die($result->getMessage());
}

while($row = $result->fetchRow()){
echo $row[0]; // 返却データをループ
}
?>