prepare()
hoort bij execute()
Voorbereide verklaringen werken in principe als volgt:
-
Voorbereiden:Er wordt een SQL-instructiesjabloon gemaakt en naar de database verzonden. Bepaalde waarden worden niet gespecificeerd, parameters genoemd (aangeduid met "?"). Voorbeeld:
INSERT INTO mtTable VALUES(?, ?, ?)
-
De database parseert, compileert en voert query-optimalisatie uit op de SQL-instructiesjabloon en slaat het resultaat op zonder het uit te voeren
-
Uitvoeren:op een later tijdstip bindt de toepassing de waarden aan de parameters en voert de database de instructie uit. De toepassing mag de instructie zo vaak uitvoeren als hij wil met verschillende waarden
probeer met onderstaande code
<?php
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$rowperpage = 3;
$offset = 0;
// counting total number of posts
$query = "SELECT count(id) AS allcount FROM posts";
$stmt = $db->query($query)->fetchColumn();
/******** The ABOVE QUERY LOOKS POINTLESS TO ME AS YOU NOT USING THE RESULTS FROM THAT QUERY*/
// select first 3 posts
$qry = "SELECT * FROM posts ORDER BY id ASC LIMIT ?,? ";
$stm = $db->prepare($qry);
$stm->execute(array($offset,$rowperpage));
$results = $stm->fetchall(PDO::FETCH_ASSOC);
if (count($results) > 0) {
foreach ($results as $row) {
$id = $row['id'];
$title = $row['title'];
$content = $row['content'];
$shortcontent = substr($content, 0, 160) . "...";
$link = $row['link'];
}
} else {
echo "No records found";
}
?>