prepare()
va avec execute()
Les instructions préparées fonctionnent essentiellement comme ceci :
-
Préparer :un modèle d'instruction SQL est créé et envoyé à la base de données. Certaines valeurs sont laissées non spécifiées, appelées paramètres (étiquetés "?"). Exemple :
INSERT INTO mtTable VALUES(?, ?, ?)
-
La base de données analyse, compile et effectue l'optimisation des requêtes sur le modèle d'instruction SQL et stocke le résultat sans l'exécuter
-
Exécuter :ultérieurement, l'application lie les valeurs aux paramètres et la base de données exécute l'instruction. L'application peut exécuter l'instruction autant de fois qu'elle le souhaite avec des valeurs différentes
essayez avec le code ci-dessous
<?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";
}
?>