[RESOLU] Invalid parameter number

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Invalid parameter number

Re: Invalid parameter number

par nestor94 » 30 avr. 2021, 00:28

Ca y est, cette fois c'est résolu :wink:
<?php
session_start();
require_once 'config.php';
$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
$sql = "SELECT item, qte_item, usure_item FROM map LEFT JOIN membres ON map.pos_x = membres.pos_x AND map.pos_y = membres.pos_y WHERE membres.id=:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();    
$item = $resultat['item'];
$qte_item= $resultat['qte_item'];
$usure_item= $resultat['usure_item'];
if ($item === '/objets/rien.gif')
{
header('Location:erreur_creuser.html');
}
$info= "VOUS AVEZ TROUVÉ <img src= ".$item." />";


$sql = "UPDATE membres SET decouverte = '$item', qte_decouverte= '$qte_item', usure_decouverte= '$qte_item', info= '$info', HAB= HAB+1 WHERE id =:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();

$pdostat =  $bdd->prepare("UPDATE map INNER JOIN membres ON membres.pos_x = map.pos_x AND membres.pos_y = map.pos_y
SET map.item = '/objets/rien.gif' WHERE membres.id= $id");
$pdostat->execute();
header('Location:page_membre.php');

?> 


Re: Invalid parameter number

par nestor94 » 30 avr. 2021, 00:14

Ca y est, j'ai trouvé. Il fallait binder :info ? mais cela ne s'affiche pas à la finale.

Re: Invalid parameter number

par nestor94 » 30 avr. 2021, 00:05

Désolé, je viens d'enlever un morceau de code juste au dessus de cet update et le script fonctionne. :oops:
et replante !!!
<?php
session_start();
require_once 'config.php';
$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
$sql = "SELECT item FROM map LEFT JOIN membres ON map.pos_x = membres.pos_x AND map.pos_y = membres.pos_y WHERE membres.id=:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();    
$item = $resultat['item'];
if ($item === '/objets/rien.gif')
{
header('Location:erreur_creuser.html');
}
$info= "VOUS AVEZ TROUVÉ <img src= ".$item." />";


$sql = "UPDATE membres SET decouverte = '$item', info=:info, HAB= HAB+1 WHERE id =:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();

$pdostat =  $bdd->prepare("UPDATE map INNER JOIN membres ON membres.pos_x = map.pos_x AND membres.pos_y = map.pos_y
SET map.item = '/objets/rien.gif WHERE membres.id= $id");
$pdostat->execute();
header('Location:page_membre.php');

?> 













Re: Invalid parameter number

par or 1 » 29 avr. 2021, 23:56

combien de fois y-a-t il le caractère : dans la requête ?
combien de bindvalue ?

Invalid parameter number

par nestor94 » 29 avr. 2021, 23:48

Bonjour, j'ai un script qui plante et je ne comprends pas sachant qu'un autre écrit de la même façon fonctionne?!
$sql = "UPDATE membres SET decouverte = '$item', info=:info, HAB= HAB+1 WHERE id =:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
Invalid parameter number: number of bound variables does not match number of tokens in C:\wam