sql >> Databasteknik >  >> RDS >> Mysql

vad är det jag gör för fel när jag konverterar

prepare() går med execute()

Förberedda uttalanden fungerar i princip så här:

  1. Förbered:En SQL-satsmall skapas och skickas till databasen. Vissa värden lämnas ospecificerade, kallade parametrar (märkta "?"). Exempel:

    INSERT INTO mtTable VALUES(?, ?, ?)

  2. Databasen analyserar, kompilerar och utför frågeoptimering på SQL-satsmallen och lagrar resultatet utan att exekvera det

  3. Execute:Vid ett senare tillfälle binder applikationen värdena till parametrarna, och databasen kör satsen. Applikationen kan köra satsen så många gånger den vill med olika värden

försök med nedanstående kod

<?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";
}
?>



  1. orakelhjälp saknar kommatecken

  2. jämför två kommaseparerade värden i mysql

  3. Flera möjligheter för LINES TERMINATED BY och FIELDS TERMINATED BY - MySQL

  4. MAMP mysql startar inte