J'apprends actuellement PHP et MySQL. Je viens d'écrire une classe qui gère tout le trafic MySQL, mais je rencontre quelques erreurs.Pourquoi mon instruction PHP préparée pour MySQL ne fonctionne-t-elle pas?
function table_exists($tablename){
// check if table exists
$stmt = $this->db->prepare("SHOW TABLES LIKE '?'");
$stmt->bind_param("s", $tablename); //This is line 24.
$stmt->execute();
$ar = $stmt->affected_rows;
$stmt->close();
if ($ar > 0){
return true;
} else {
return false;
}
}
Ce code est le problème, et l'erreur que je reçois est
Attention Génère: mysqli_stmt :: bind_param() [mysqli-stmt.bind-PARAM]: nombre de des variables ne correspond pas à nombre de paramètres dans déclaration préparée dans C: \ xampp \ htdocs \ mail \ datahandler.php en ligne 24
Des idées?
Merci
Cela signifie-t-il que si je fais cela, je n'aurai pas besoin de la citation non plus? $ query = "SUPPRIMER FROM maillist WHERE id = '?' ET" . "password = 'MOT DE PASSE (?)'"; – Pwnna
Après avoir utilisé votre code, je reçois Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de '?' à la ligne 1 – Pwnna
Peut-être que SHOW TABLES ne prend pas en charge les instructions préparées dans la clause LIKE ... Essayez 'SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA =? AND TABLE_NAME =? 'Où' TABLE_SCHEMA' est le nom de votre base de données, et 'TABLE_NAME' est le nom de votre table. – Mchl