php spot
phpが使えるレンタルサーバー特集
検索グラス
トップページへ

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

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

※以下のコードを実行するには pear-MDB2 が必要です。PEARとはPHP向けの標準ライブラリのことで、ここではデータベースに簡単に接続できるライブラリであるMDB2を使います。

<?php
require_once'MDB2.php';

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

if (
MDB2::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 (
MDB2::isError$result )) {
    die(
$result->getMessage());
}

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

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

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

次のように置き換えます。

$sql = "select * from table where id = ?";
$sth = $db->prepare($sql);
$result = $db->execute($sth, array("1"));

$sql = "select * from table where id = ?";
$result = $db->query($sql, array("1"));

スポンサードリンク



PHPサンプル集
管理人の新着ブログ記事

    プライバシーポリシー | お問い合わせ
copyright © 2003-2024 phpspot all rights reserved. powered by phpspot CMS.