2012-06-25 2 views
0

J'utilise PDO pour la première fois.La syntaxe PDO semble incorrecte

$result=$dbh->query($query) or die($dbh->errorinfo()."\n"); 

echo $result->fetchColumn(); 

$row = $result->fetch(PDO::FETCH_ASSOC); 

Le résultat du code suivant est que $ row est initilazed ie isset mais est vide.

Je ne pouvais pas savoir où je me suis trompé. merci d'avance

+1

Si votre requête aboutit à une ligne, peut-être que 'fetchColumn()' déplace votre pointeur vers la fin du jeu de résultats. – Quantastical

+0

Alors, quelle est la solution? J'ai besoin de fretchColumn pour vérifier si la colonne affiche –

+0

Commenter la ligne 'echo $ result-> fetchColumn();' – Quantastical

Répondre

1

PDO ne fait pas l'ancien code mysql_*do or die().

est ici la syntaxe correcte:

try { 
    //Instantiate PDO connection 
    $dbh = new PDO("mysql:host=localhost;dbname=db_name", "user", "pass"); 
    //Make PDO errors to throw exceptions, which are easier to handle 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    //Make PDO to not emulate prepares, which adds to security 
    $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 

    $query = "SELECT * FROM `some_table`"; 

    //Prepare the statement 
    $stmt = $dbh->prepare($query); 
    //Execute it (if you had any variables, you would bind them here) 
    $stmt->execute(); 

    //Work with results 
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
     //Do stuff with $row 
    } 
} 
catch (PDOException $e) { 
    //Catch any PDOExceptions that were thrown during the operation 
    die("An error has occurred in the database: " . $e->getMessage()); 
} 

Vous devriez lire le PDO Manual, pour obtenir une meilleure compréhension du sujet.

+0

'PDO' par défaut errormode (sans exception) _does_ fait le code' ou die() '(qui est spécifique à MySQL,' $ fp = fopen ('quelquechose') ou die ('impossible d'ouvrir le fichier); Cependant, tout le monde sait que 'ou die()' est la pire erreur de gestion que l'on puisse penser, même un 'ou trigger_error()' est meilleur, donc vous avez raison d'éloigner l'OP de cela. cela ne résout pas le problème: mélanger les colonnes et les récupérations de ligne. – Wrikken