[RESOLU] Invalid parameter number

Eléphant du PHP | 345 Messages

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

Mammouth du PHP | 2703 Messages

29 avr. 2021, 23:56

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

Eléphant du PHP | 345 Messages

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');

?> 














Eléphant du PHP | 345 Messages

30 avr. 2021, 00:14

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

Eléphant du PHP | 345 Messages

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');

?>