Prepared statement di MySQL
Ada 3 workflow utama penggunaan Prepared statemtn di MySQL yaitu:
- PREPARE – Prepares statement for execution.
- EXECUTE – Executes a prepared statement preparing by a PREPARE statement.
- DEALLOCATE PREPARE – Releases a prepared statement.

Contoh nya :
PREPARE stmt1 FROM 'SELECT nama, alamat,usia
FROM user
WHERE id_user = ? ';
SET @pc = '234';
EXECUTE stmt1 USING @pc;
DEALLOCATE PREPARE stmt1;
dari Query diatas, dapat dilihat bahwa pertama kita menyiapkan/prepare statement nya dulu, dan id_user nya di ganti dengan '?'. setelah itu buat variable @pc untuk menyimpan value sebenarnya dari id_user , lalu statement tersebut kita Execute/Eksekusi.
Deallocate Prepare sebenarnya tidak perlu kitaa tuliskan lagi, karena sudah secara difault di dealokasi oleh server.
Prepared statement di PHP PDO
di PDO ,query ke MySQL bisa dengan mudah kita sisipkan fitur ini.
$dbhost = "localhost"; $dbname = "codetrash"; $dbuser = "root"; $dbpass = ""; // database connection $conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass); $id_category = '1'; //misal id nya yg 1 // query, pake tanta ? $sql = "SELECT * FROM category WHERE id_categry = ? "; $q = $conn->prepare($sql); $q->execute(array($id_category)); $q->setFetchMode(PDO::FETCH_BOTH); // fetch while($r = $q->fetch()){ print_r($r); }
Contoh lain
//pake tanda : diikuti variable nya
$stmt = $dbh->prepare("INSERT INTO tutorial (title, content) VALUES (:title, :content)");
$stmt->bindParam(':title', $title);
$stmt->bindParam(':content', $content);
// insert one row
$title = 'Contoh PDO';
$content = 'PDO itu sangat dianjurkan';
$stmt->execute();
// insert another row
$title = 'Share aplikasi rumah sakit';
$content = 'berikut adalah contoh aplikasi rumah sakit...';
$stmt->execute();
dgn PDO kita jg menggunakan paramter Binding seperti contoh diatas
$stmt->bindParam(':title', $title);
$stmt->bindParam(':content', $content);
di Codeigniter bisa dilakukan seperti berikut
$sql = "SELECT * FROM user WHERE id = ?
AND status = ? AND name = ?";
$this->db->query($sql, array(1, 'active', 'ganjar'));
Happy Coding !!!
Ref :
mysqltutorial
PHPnet