Page 1 sur 1

Erreur dans execute data

Posté : 03 déc. 2021, 22:20
par NinitDUT
Bonjour,

Je suis en deuxième année de DUT Réseau et Télécommunication. Pour mon projet de fin d'étude je dois faire une LAN. Je suis chargé de faire pour le moment le site web avec une base de donnée en MySQL. Une fois mon formulaire fait et que j'essaye de l'envoyer dans ma BDD il y a ce message d'erreur :
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:\wamp64\www\lan\php\ajouteEquipeMC.php on line 17

Je vous joint mon code :
<?php
include '../template/connect.php';

$Equipe_nom_Mc = $_POST['NomEquipeMC'];
$Pseudo_Capitaine = $_POST['capitaine'];
$Pseudo_tm1 = $_POST['TeamMate1'];
$Pseudo_tm2 = $_POST['TeamMate2'];
$data = [
'Equipe_nom_Mc' => $Equipe_nom_Mc,
'Pseudo_Capitaine' => $Pseudo_Capitaine,
'Pseudo_tm1' => $Pseudo_tm1,
'Pseudo_tm2' => $Pseudo_tm2,
];
echo "$Equipe_nom_Mc, $Pseudo_Capitaine, $Pseudo_tm1, $Pseudo_tm2";
$sql = "INSERT INTO equipe_mc (Equipe_nom_Mc, Pseudo_Capitaine, Pseudo_tm1, Pseudo_tm2) VALUES (:Equipe_nom_Mc, :Pseudo_Capitaine, :Pseudo_tm1, Pseudo_tm2)";
$stmt= $dbh->prepare($sql);
$stmt->execute($data);
?>

Si des personnes ont déjà eu cette erreur je veux bien un peu d'aide car je sèche un peu...

Re: Erreur dans execute data

Posté : 03 déc. 2021, 22:39
par @rthur
Le nombre de paramètres que tu passes dans le execute() ne correspond pas au nombre de paramètres attendus dans ta requête SQL.
Indice : il manque un caractère qq part ;-)

Re: Erreur dans execute data

Posté : 04 déc. 2021, 17:04
par ninitDUT
En effet, merci.

Par contre il y a qqch de surprenant ma bdd ne s'incrémente pas, aucune erreur, je peu allez récupérer des informations de la bdd mais pas l'incrémenter....

Re: Erreur dans execute data

Posté : 04 déc. 2021, 23:14
par @rthur
As tu bien mis un champ en autoincrement ?

Re: Erreur dans execute data

Posté : 06 déc. 2021, 09:48
par ninitDut
Oui j'ai un champ en auto_increment ...

Re: Erreur dans execute data

Posté : 06 déc. 2021, 11:38
par @rthur
Teste ta requête dans phpmyadmin.
Si ton champ est bien en format INT (ou assimilé) et en AUTOINCREMENT il va forcément s'incrémenter.


Si tu bloques toujours, dans phpmyadmin, fait un export SQL de la structure de ta table

Re: Erreur dans execute data

Posté : 07 déc. 2021, 13:49
par NinitDUT
Bonjour,

Quand je fait ma requête SQL dans ma bdd celle si s'incrémente. Mais toujours impossible de l'incrémenté. Je vous join ma bdd en sql :
-- phpMyAdmin SQL Dump
-- version 5.0.2
--
-- Hôte : 127.0.0.1:3306
-- Généré le : mar. 07 déc. 2021 à 11:42
-- Version du serveur : 5.7.31
-- Version de PHP : 7.4.9

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Base de données : `lan`
--

-- --------------------------------------------------------

--
-- Structure de la table `equipe_mc`
--

DROP TABLE IF EXISTS `equipe_mc`;
CREATE TABLE IF NOT EXISTS `equipe_mc` (
`ID_equipe_MC` int(11) NOT NULL AUTO_INCREMENT,
`Equipe_nom_Mc` varchar(50) NOT NULL,
`Pseudo_Capitaine` varchar(50) NOT NULL,
`Pseudo_tm1` varchar(50) NOT NULL,
`Pseudo_tm2` varchar(50) NOT NULL,
`Date_de_creation` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`MDP_Mumble` varchar(50) NOT NULL,
PRIMARY KEY (`ID_equipe_MC`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

--
-- Déchargement des données de la table `equipe_mc`
--

INSERT INTO `equipe_mc` (`ID_equipe_MC`, `Equipe_nom_Mc`, `Pseudo_Capitaine`, `Pseudo_tm1`, `Pseudo_tm2`, `Date_de_creation`, `MDP_Mumble`) VALUES
(1, 'les Zinzins', 'tes1', 'test2', 'test3', '2021-12-07 11:42:20', 'test');
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

J'ai pensé utilisé les commande Mysql_connect /M,ysql_insert mais en faisant des recherches dessus je trouve que se sont des commande ancienne....

Re: Erreur dans execute data

Posté : 07 déc. 2021, 13:55
par or 1
la requête qui ne fonctionne pas, à tester dans phpmyadmin pour que phpmyadmin dise ce qui ne va pas.
INSERT INTO equipe_mc (Equipe_nom_Mc, Pseudo_Capitaine, Pseudo_tm1, Pseudo_tm2) VALUES (:Equipe_nom_Mc, :Pseudo_Capitaine, :Pseudo_tm1, Pseudo_tm2)

la requête qui fonctionne :
INSERT INTO `equipe_mc` (`ID_equipe_MC`, `Equipe_nom_Mc`, `Pseudo_Capitaine`, `Pseudo_tm1`, `Pseudo_tm2`, `Date_de_creation`, `MDP_Mumble`) VALUES
(1, 'les Zinzins', 'tes1', 'test2', 'test3', '2021-12-07 11:42:20', 'test');

Re: Erreur dans execute data

Posté : 09 déc. 2021, 23:11
par NinitDUT
Merci pour votre aide mon formulaire fonctionne correctement maintenant. :D