A voir également:
- If {} else.. Php Mysql
- Easy php - Télécharger - Divers Web & Internet
- Mysql download - Télécharger - Bases de données
- Mysql error in file: /engine/classes/mysql.php at line 53 ✓ - Forum Réseaux sociaux
- Php?id=1 - Forum PHP
- Get_magic_quotes_gpc php 8 ✓ - Forum PHP
4 réponses
Utilisateur anonyme
Modifié par le père. le 27/03/2015 à 17:13
Modifié par le père. le 27/03/2015 à 17:13
Je simplifie un peu :
Quand tu as exécuté une requête SELECT, pour récupérer le résultat (s'il y en a un) il faut faire une opération qui s'appelle fetch et qui te donne une ligne de résultat. Tu peux d'ailleurs recommencer s'il y a plusieurs lignes pour toutes les récupérer, mais ton COUNT(*) donne une seule ligne.
Le résultat récupéré est (sauf utilisation d'autres options) un tableau qui contient autant d'éléments que de champs demandés. Dans ton cas, un seul
Quand tu as exécuté une requête SELECT, pour récupérer le résultat (s'il y en a un) il faut faire une opération qui s'appelle fetch et qui te donne une ligne de résultat. Tu peux d'ailleurs recommencer s'il y a plusieurs lignes pour toutes les récupérer, mais ton COUNT(*) donne une seule ligne.
Le résultat récupéré est (sauf utilisation d'autres options) un tableau qui contient autant d'éléments que de champs demandés. Dans ton cas, un seul
$doublon = $bdd->prepare("SELECT COUNT(*) FROM Cli WHERE NAME= :nom AND FIRSTNAME= :prenom;"); $doublon->execute(array('nom'=>$name, 'prenom'=>$prenom)); $ligne=$doublon->fetch(); if ($ligne[0]>0)...
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
27 mars 2015 à 16:32
27 mars 2015 à 16:32
Bonjour,
Ajoute les ":" devant le nom des variables
$req->execute(array( "name" =>$name, "prenom"=>$prenom, "sexe"=>$sexe, "age"=>$age, ));
Ajoute les ":" devant le nom des variables
$req->execute(array(":name" =>$name , ":prenom"=>$prenom , ":sexe"=>$sexe , ":age"=>$age ));
Utilisateur anonyme
Modifié par le père. le 27/03/2015 à 16:51
Modifié par le père. le 27/03/2015 à 16:51
Bonjour
Ton erreur vient du test if ($doublon>0)
$doublon est le résultat d'un pdo::execute, et vaut donc true ou false suivant que ta requête s'est bien ou mal déroulée. Ce n'est pas un nombre, tester s'il est supérieur à 0 ne veut pas dire grand-chose, en tous cas pas ce que tu crois.
Il faut faire un fetch pour avoir accès au count(*), comme pour n'importe quelle autre résultat de SELECT
Au passage, les : ne sont pas obligatoires dans les noms de paramètres qu'on passe en array à execute : PHP les rajoute si on ne les met pas.
Ton erreur vient du test if ($doublon>0)
$doublon est le résultat d'un pdo::execute, et vaut donc true ou false suivant que ta requête s'est bien ou mal déroulée. Ce n'est pas un nombre, tester s'il est supérieur à 0 ne veut pas dire grand-chose, en tous cas pas ce que tu crois.
Il faut faire un fetch pour avoir accès au count(*), comme pour n'importe quelle autre résultat de SELECT
Au passage, les : ne sont pas obligatoires dans les noms de paramètres qu'on passe en array à execute : PHP les rajoute si on ne les met pas.
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
27 mars 2015 à 16:54
27 mars 2015 à 16:54
Au passage, les : ne sont pas obligatoires dans les noms de paramètres qu'on passe en array à execute : PHP les rajoute si on ne les met pas.
Ah.. ben j'en était pas sûr. c'est bon à savoir.
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
>
boubou2111
27 mars 2015 à 17:02
27 mars 2015 à 17:02
normalement il n'y a même pas besoin de FETCH.
ceci devrait marcher :
ceci devrait marcher :
if ($doublon)
Utilisateur anonyme
>
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
27 mars 2015 à 17:05
27 mars 2015 à 17:05
Certainement pas.
Ce test est équivalent au sien, tu vas juste vérifier qu'il n'y a pas eu d'erreur dans l'exécution de la requête, pas le nombre récupéré par le COUNT(*)
Ce test est équivalent au sien, tu vas juste vérifier qu'il n'y a pas eu d'erreur dans l'exécution de la requête, pas le nombre récupéré par le COUNT(*)
Utilisateur anonyme
27 mars 2015 à 17:02
27 mars 2015 à 17:02
Le fetch je le met dans le if?
Tu ne sais pas récupérer le résultat d'une requête SELECT ? C'est la première fois que tu utilises une base de données ?
Tu ne sais pas récupérer le résultat d'une requête SELECT ? C'est la première fois que tu utilises une base de données ?
27 mars 2015 à 22:21
28 mars 2015 à 02:25