8722 sujets

Développement web côté serveur, CMS

Bonjour,
Je suis nouveau sur le forum et j'espère trouver la solution à mon problème.
J'étais sur Php 5.3 et je viens de passer à Php 5.6 et je rencontre quelques soucis.
J'avais les requêtes suivantes

$requete = "SELECT * FROM membres WHERE nom LIKE '%$nom%' AND prenom LIKE '%$prenom%' ";
$resultat = $mysqli->query($requete) or die ('Erreur '.$requete.' '.$mysqli->error());
$row = mysqli_fetch_array($resultat);
if (mysqli_num_rows($resultat) > 0){
$requete = "UPDATE membres SET phone = '$phone', mail = '$mailFC', password = '$password' WHERE id = $user_id";
$resultat = $mysqli->query($requete) or die ('Erreur '.$requete.' '.$mysqli->error());
$message1 = "Vos données sont bien enregistrés.";
}

Ces 2 requêtes ne fonctionnent pas avec Php 5.6 et je n'arrive pas à les modifier
Merci d'avance de votre aide
Salut,

Je te propose de passer par PDO et de faire des requêtes dites "préparé" si tu veux éviter les injections SQL.
JENCAL a écrit :
Salut,

Je te propose de passer par PDO et de faire des requêtes dites "préparé" si tu veux éviter les injections SQL.

Tout pareil Smiley smile
Voilà ce que j'ai écrit

		$cnx = new PDO('mysql:host=127.0.0.1;dbname=jumelage;charset=utf8', 'root', '');
		// teste si les nom et le prénom sont déjà dans la base de données
		$sql = $cnx->prepare("SELECT * FROM membres WHERE nom LIKE '%$nom%' AND prenom LIKE '%$prenom%' ");
		$sql->excute(array($nom,$prenom));
		$result = $sql->rowCount();
		if ($result == 1){
			echo "déja";
		}
		else { echo 'je peux insérer'; }


et j'ai l'erreur suivante
Fatal error: Call to undefined method PDOStatement::excute() in C:\Weblocal\Sites\Jumelage\fr\membres.php on line 32

La ligne est

$sql->excute(array($nom,$prenom));

Je pense que vous aviez vu mon erreur ! mais je suis autodidacte je ne vois pas
Oui, il est écrit que "execute" se fait sur un objet PDOStatement::excute() dont "PDOStatement" et pas "PDO"
Modifié par JENCAL (04 Jul 2019 - 10:56)
Petite aide : regarde au niveau de tes variables DANS la requêtes sql. c'est pas la bonne syntaxe
kustolovic a écrit :
Pour l'erreur, c'est execute et non excute


au punaise oui! lol


Et puis t'es variables dans ta requête select doivent être "?"

exemple:

Select * from User where prenom = ?
JENCAL a écrit :

au punaise oui! lol
Et puis t'es variables dans ta requête select doivent être "?"
exemple:
Select * from User where prenom = ?


Oui bien sûr Smiley confused soit c'est la fatigue (en début de journée !!) soit de l'inattention !!) Un peu des deux

		$cnx = new PDO('mysql:host=127.0.0.1;dbname=jumelage;charset=utf8', 'root', '');
		// teste si les nom et le prénom sont déjà dans la base de données
		$sql = $cnx->prepare("SELECT * FROM membres WHERE nom = ? AND prenom = ? ");
		$sql->execute(array($nom,$prenom));
		$result = $sql->rowCount();
		if ($result == 1){
			echo "déja";
		}
		else { echo 'je peux insérer'; }

en tout cas merci beaucoup.
Attention, petit détail qui peut avoir son importance: quand tu as fini toutes tes opérations sur ta base, il est bien de faire
$sql->closeCursor();
ça peut éviter des erreurs/conflits avec d'autres requêtes.
Modifié par Mathieu8337 (04 Jul 2019 - 12:15)