2011-10-17 4 views
1

le résultat suivant est faux et je ne sais pas comment trouver ce qui ne va pas.PHP MySQL prepare-instruction prepare() échoue

$stmt = $dbo->stmt_init(); 
if($stmt->prepare("INSERT INTO transactions ('id', 'time') VALUES ('',?)")) // returns false 
{ 
} 

J'ai une autre instruction qui fait une sélection ouverte à ce moment-là. est-ce un problème d'avoir plus d'une déclaration?

Répondre

3

Avez-vous vérifié que vous vous connectez à la base de données avec succès?

/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
} 

En ce qui de trouver ce qui ne va pas avec votre déclaration préparée, vous devriez pouvoir afficher stmt- $> erreur, qui renvoie une description de chaîne de la dernière erreur de déclaration, et l'erreur $ dbo->, qui retournera la dernière erreur mysqli.

printf("Error: %s.\n", $stmt->error); 
+0

merci cela me donne: DB Erreur: préparer les commandes de synchronisation; vous ne pouvez pas exécuter cette commande maintenant – clamp

+2

Les questions SO suivantes peuvent vous être utiles: http://stackoverflow.com/questions/3632075/mysqli-giving-commands-out-of-sync-error-why http://stackoverflow.com/questions/614671/commandes-out-of-sync-you-cant-run-this-command-now1 –

0

Vous ne voulez pas de guillemets simples autour des noms de vos tables. Cela devrait ressembler à ceci:

$stmt = $dbo->stmt_init(); 
if($stmt->prepare("INSERT INTO transactions (id, time) VALUES ('', ?)")) { 

} 
+0

merci, mais il ne marche pas tout changement. retourne toujours faux. – clamp

0

il suffit de vérifier si ces colonnes sont correctement entrées ... que je recevais même erreur coz je l'ai mentionné le nom de colonne non existant dans la requête ..