2009-09-30 4 views
3

Je viens d'apprendre a commencé aboud AOP et des déclarations préparées (qui semblent vous battre ne pas oublier de l'utiliser mysql_real_escape_string() à chaque fois), mais je vais avoir du mal à obtenir le script pour exécuter correctement:déclaration Aide dépannage PDO préparé

<?php 
error_reporting(E_ALL); 
echo "start"; 

try{ 
    $dbh=new PDO('mysql:host=localhost;dbname=DBNAME','USER','PWD'); 
} 
catch(PDOException $e){ 
    echo 'Error connecting to MySQL!: '.$e->getMessage(); 
    exit(); 
} 

$dbh->prepare('SELECT * FROM users WHERE uid= ?'); 
$dbh->execute(array('15400743')); 
$result=$dbh->fetchAll(); 
print_r($result); 
echo "end"; 
?> 

Ceci est à peu près copié à partir d'un exemple de code, mais lorsqu'il est exécuté ne renvoie que "start". J'ai vérifié mon db/user/pw. Quelque chose d'autre les gens voient mal? Merci!

+0

Vous pouvez définir '$ dbh-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);'. Sinon, vous devez vérifier la valeur de retour de chaque méthode appelée. – VolkerK

Répondre

6

La manière correcte est:

<?php 
error_reporting(E_ALL); 
echo "start"; 

try{ 
    $dbh=new PDO('mysql:host=localhost;dbname=DBNAME','USER','PWD'); 
} 
catch(PDOException $e){ 
    echo 'Error connecting to MySQL!: '.$e->getMessage(); 
    exit(); 
} 

$stmt = $dbh->prepare('SELECT * FROM users WHERE uid= ?'); 
$stmt->execute(array('15400743')); 
$result = $stmt->fetchAll(); 
print_r($result); 
echo "end"; 
?> 

Notez le assinment de la préparation à la variable $ stmt et l'utilisation de cette suite.