اگربا زبانهای برنامه نویسی از جمله ویژوال استادیو کار کرده باشید با بحث دستورهای آماده(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));