Bonjour a tous,
Je ne sais pas ci ce sujet va ici ou dans SQLmais je m'excuse d'avance ci ce n'est pas au bon endroit.
Alors je vous explique mon soucis, j'ai une ligne dans ma base de donnée qui se nome lock et quand je la met en Boolean il me la transforme en TinyInt jusque la je me dit que ca ne devrais pas poser soucis mais quand j'éssai de la récupéré avec la ligne suivante :
function verif_sujet($pdo,$id){
$requete = $pdo->query("SELECT * FROM forum_categories
WHERE id='$id' AND lock=1");
$requete->execute();
$count = $requete->rowCount();
return $count;
}
Il me dit : Call to a member function execute().
Le probléme vient t'il du TinyInt ? Je ne peut le passer en Boolean..
Merci a tous de votre aide. Bonne soiré
DylanJe viens de voir que lock est une fonction mysql alors il vous faut soit changer son nom, soit utiliser les '`' comme pour
ORDER BY `lock`
// Vérification du sujet
function verif_sujet($pdo,$id){
$requete = $pdo->query("SELECT COUNT(*) FROM forum_categories WHERE id='$id' AND 'lock'=0 ");
$requete->execute();
$count = $requete->fetchColumn(); ;
return $count;
}
rowCount ne fonctionne pas forcément avec mysql
Bonsoir et merci de ta réponse,
Oui, ci j'enleve la partie AND lock=1 Il me trouve les resultats
Et comme ceci :
$requete = $pdo->query("SELECT * FROM forum_categories WHERE id='$id' AND lock = true");
Mysql me répond :
Requête SQL : Documentation
SELECT * FROM forum_categories WHERE id=1 AND lock=0 ORDER BY `lock` DESC
LIMIT 0, 25
MySQL a répondu: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'lock=0 ORDER BY `lock` DESC
LIMIT 0, 25' at line 1
Cela fonctionne mais ca dépend a quel niveau :p Ma requete est la suivante :
// Vérification du sujet
function verif_sujet($pdo,$id){
$requete = $pdo->query("SELECT * FROM forum_categories WHERE id='$id' AND 'lock'=0");
$requete->execute();
$count = $requete->rowCount();
return $count;
}
Et je vérifie avec ce code :
if(verif_sujet($pdo,$url[3]) == 1){
// Il a trouvé un resultat qui correspond donc il affiche le formulaire
}else{
// Il n'a pas trouvé donc il redirige la personne
}
Mais mémes la ou il devrais trouvé un resultat il ne trouve pas :/
Catégorie 01 = Lock donc redirection.
Catégorie 02 = Non Lock donc pas de redirection.
Mais la il me redirige a tous les coups :/
Un grand merci ! cela fonctionne impecablement !
J'aimerais te poser une petite question supplementaire: Pourquoi quand je met en boolean il me le transforme en TinyInt ? A cause du nom ? (lock) ?
En tous cas un grand merci de ton aide ! :)
Toutes les valeurs <> 0 sont considérées comme VRAI (de -128 à +127 sauf 0)
et zéro comme FAUX
parcontre, l'alias TRUE correspond à la valeur 1
et FALSE à 0
donc prudence, il vaut mieux comparer avec FALSE qu'avec TRUE