اگربا زبانهای برنامه نویسی از جمله ویژوال استادیو کار کرده باشید با بحث دستورهای آماده(Prepared Statements) آشنایی داریدواحتمالا از دستورات آماده استفاده کرده اید.
PHP Extension برای MySQL و SQLite این قابلیت را ندارد. در مثال زیر مفهوم دستورات آماده را خواهید فهمید.
// configuration
$dbtype = “sqlite”;
$dbhost = “localhost”;
$dbname = “test”;
$dbuser = “root”;
$dbpass = “admin”;
// database connection
$conn = new PDO(“mysql:host=$dbhost;dbname=$dbname”,$dbuser,$dbpass);
$title = ‘PHP AJAX’;
// query
$sql = “SELECT * FROM books WHERE title = ?”;
$q = $conn->prepare($sql);
$q->execute(array($title));
$q->setFetchMode(PDO::FETCH_BOTH);
// fetch
while($r = $q->fetch()){
print_r($r);
}
?>
در این مثال، پرس و جو به یک متغیر (که با علامت ? مشخص کرده ایم) بستگی دارد.
$sql = “SELECT * FROM books WHERE title = ?”;
حالا، این پرس و جو را دستکاری می کنیم تا یک دستور آماده ساخته و اجرا کنیم.
$q = $conn->prepare($sql);
$q->execute(array($title))
مثال
$title = ‘PHP%’;
$author = ‘Bobi%’;
// query
$sql = “SELECT * FROM books WHERE title like ? AND author like ? “;
$q = $conn->prepare($sql);
$q->execute(array($title,$author));