Page 1 sur 1

Erreur sur un insert

Posté : 10 août 2015, 19:06
par yoann38
Salut à tous.
Je dois buger tout autant que mon script je ne vois pas mon erreur
Le but du script est de rajouter une colone url en fonction du titre.
J'ai donc créer une colonne "url" et je cherche maintenant à y associer l'url en fonction du titre...
Si vous pouvez m'éclairer ...
Merci

Je me retrouve avec un message du genre:
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\site\test.php on line 38
<?php
    
            include("connect.php");
            
            //Selection des l'annonce
            $sql = "SELECT * FROM table";
            $req = $bdd->query($sql);
				
            // On parcourt toutes les entrées
            while($ligne = $req->fetch(PDO::FETCH_ASSOC))// On affiche chaque entrée une à une

            {
				
			//construction de l'url en fonction du titre
			$recherche_pour_url = $ligne['titre'];
			$remplacement_url = str_replace ( ' ', '-', $recherche_pour_url);
			
			//Affichage des données	
            echo '<strong>Titre: </strong>' .$ligne['titre']. '<br>';
			echo '<strong>Url: </strong>' .$remplacement_url. '<br><br><hr>';
			
			
			
		$req = $bdd->prepare('INSERT INTO table(url) VALUES(:url)');
    	$req->execute(array(
     	 'url' => $remplacement_url
     	 ));
    
    	echo 'Le jeu a bien été ajouté !';
			
            }

			
    ?>
Ca marche ca insérer en fonction de la drniere entré que j'ai en bdd et ca en créer une nouvelle au lien d'insérer ds l'entrée en question ... :/

Re: Erreur sur un insert

Posté : 10 août 2015, 21:06
par yoann38
J'ai essayer avec UPDATE du coup
c'est mieux mais ça m'insere toujours la meme chose:
<?php
    
            include("connect.php");
            include("include/variables.php");
            
            //Selection des l'annonce
            $sql = "SELECT * FROM table";
            $req = $bdd->query($sql);
				
            // On parcourt toutes les entrées
            while($ligne = $req->fetch(PDO::FETCH_ASSOC))// On affiche chaque entrée une à une

            {
				
			//construction de l'url en fonction du titre
			$recherche_pour_url = $ligne['titre'];
			$remplacement_url = str_replace ( ' ', '-', $recherche_pour_url);
			
			//Affichage des données	
            echo '<strong>Titre: </strong>' .$ligne['titre']. '<br>';
			echo '<strong>Url: </strong>' .$remplacement_url. '<br><br><hr>';
					
			// Insertion des données
			$req = $bdd->prepare('UPDATE table SET url =:url');
			$req->execute(array(
			'url' =>$remplacement_url
			 ));
		
			echo 'Le jeu a bien été ajouté !';
			

            }
	
    ?>

Re: Erreur sur un insert

Posté : 10 août 2015, 22:54
par moogli
salut

il faut que tu utilises la clause SQL where.
vue que tu sembles vouloir travailler sur toute la table le plus simple étant une requête SQL simple :
pour mysql, oracle ou postgresql
update latable set url = replace(titre,' ','-');

@+

Re: Erreur sur un insert

Posté : 10 août 2015, 23:07
par yoann38
Meme avec un where ca ne change pas grand chose ....
J'ai le message suivant:
Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 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 'de la petite enfance' at line 1 in C:\wamp\www\lasortie\test.php on line 35

Ce qui correspond à la derniere ligne de :
$req = $bdd->prepare("UPDATE table SET url =:url WHERE titre =".$ligne['titre']);
      $req->execute(array(
      'url' =>$remplacement_url
       )); // ligne 35
<?php
    
            include("connect.php");

            
            //Selection des l'annonce
            $sql = "SELECT * FROM table";
            $req = $bdd->query($sql);
				
            // On parcourt toutes les entrées
            while($ligne = $req->fetch(PDO::FETCH_ASSOC))// On affiche chaque entrée une à une

            {
				
			//construction de l'url en fonction du titre
			$recherche_pour_url = $ligne['titre'];
			$remplacement_url = str_replace ( ' ', '-', $recherche_pour_url);
			
			//Affichage des données	
            echo '<strong>Titre: </strong>' .$ligne['titre']. '<br>';
			echo '<strong>Url: </strong>' .$remplacement_url. '<br><br><hr>';

			// Insertion des données
      $req = $bdd->prepare("UPDATE table SET url =:url WHERE titre =".$ligne['titre']);
      $req->execute(array(
      'url' =>$remplacement_url
       ));
    
      echo 'Le jeu a bien été ajouté !';
			
			
			}


    ?>

Re: Erreur sur un insert

Posté : 10 août 2015, 23:18
par moogli
je te conseil de lire l'intégralité du cours sur SQL que j'ai indiqué dans mon premier message.
SQL est un langage avec une synataxe précise. Cette syntaxe n'est pas respecté dans le code que tu indique et php le retourne (c'est une erreur levée par mysql).


@+