Bonjours chers amis,
je viens de debuter avec Mkframework.
mon application bug quand j'utilise le menu edit(update)
je réussi avec mes tables qui ont un identifient en auto_increment. mais les table dont j'ai defini moi même l'identifient. pose problème dans la mise a jour quand même j'utilise le bulder.
voici l'erreur
-------------------------------------------------------------------------------------------------------------------
PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
#0 [internal function]: exception_error_handler(2, 'PDOStatement::e...', 'C:\\wamp\\www\\mkf...', 251, Array)
#1 C:\wamp\www\mkframework\lib\framework\abstract\abstract_sgbd_pdo.php(251): PDOStatement->execute(Array)
#2 C:\wamp\www\mkframework\lib\framework\abstract\abstract_sgbd_pdo.php(204): abstract_sgbd_pdo->query('UPDATE utilisat...', Array)
#3 C:\wamp\www\mkframework\lib\framework\abstract\abstract_model.php(169): abstract_sgbd_pdo->update('utilisateur', Array, Array)
#4 C:\wamp\www\mkframework\lib\framework\abstract\abstract_row.php(65): abstract_model->update(Object(row_utilisateur))
#5 C:\wamp\www\mkframework\lib\framework\abstract\abstract_row.php(54): abstract_row->update()
#6 C:\wamp\www\mkframework\data\genere\New_Passeport_project\model\model_utilisateur.php(141): abstract_row->save()
#7 C:\wamp\www\mkframework\data\genere\New_Passeport_project\module\utilisateur\main.php(140): row_utilisateur->save()
#8 C:\wamp\www\mkframework\data\genere\New_Passeport_project\module\utilisateur\main.php(66): module_utilisateur->processSave()
#9 C:\wamp\www\mkframework\lib\framework\class_root.php(264): module_utilisateur->_edit()
#10 C:\wamp\www\mkframework\data\genere\New_Passeport_project\public\index.php(47): _root->run()
#11 {main}
Detail:
#0 exception_error_handler( , 'PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' , 'C:\wamp\www\mkframework\lib\framework\abstract\abstract_sgbd_pdo.php' , , Array ( [sReq] => UPDATE utilisateur SET `Login`=?,`Pwd`=?,`Nom`=?,`Prenoms`=?,`Tel`=?,`Email`=?,`nbFail`=?,`Date_creation`=?,`Code_pays`=?,`Groupe`=? WHERE Login=? [tParam] => Array ( [0] => 0 [1] => ae1c6bfd5c3839c765ab7c1bc00572167375e7bf [2] => EDJA [3] => OI EDJA JOSEPH [4] => 05 37 52 18 [5] => edjajoseph@yahoo.fr [6] => 0 [7] => 2017-11-15 [8] => CI [9] => Administrateur ) [tATTRERRMODE] => Array ( [SILENT] => 0 [WARNING] => 1 [EXCEPTION] => 2 ) [tATTRCASE] => Array ( [LOWER] => 2 [NATURAL] => 0 [UPPER] => 1 ) [sth] => PDOStatement Object ( [queryString] => UPDATE utilisateur SET `Login`=?,`Pwd`=?,`Nom`=?,`Prenoms`=?,`Tel`=?,`Email`=?,`nbFail`=?,`Date_creation`=?,`Code_pays`=?,`Groupe`=? WHERE Login=? ) ) )
#1 C:\wamp\www\mkframework\lib\framework\abstract\abstract_sgbd_pdo.php (251)
PDOStatement -> execute( Array ( [0] => 0 [1] => ae1c6bfd5c3839c765ab7c1bc00572167375e7bf [2] => EDJA [3] => OI EDJA JOSEPH [4] => 05 37 52 18 [5] => edjajoseph@yahoo.fr [6] => 0 [7] => 2017-11-15 [8] => CI [9] => Administrateur ) )
#2 C:\wamp\www\mkframework\lib\framework\abstract\abstract_sgbd_pdo.php (204)
abstract_sgbd_pdo -> query( 'UPDATE utilisateur SET `Login`=?,`Pwd`=?,`Nom`=?,`Prenoms`=?,`Tel`=?,`Email`=?,`nbFail`=?,`Date_creation`=?,`Code_pays`=?,`Groupe`=? WHERE Login=?' , Array ( [0] => 0 [1] => ae1c6bfd5c3839c765ab7c1bc00572167375e7bf [2] => EDJA [3] => OI EDJA JOSEPH [4] => 05 37 52 18 [5] => edjajoseph@yahoo.fr [6] => 0 [7] => 2017-11-15 [8] => CI [9] => Administrateur ) )
#3 C:\wamp\www\mkframework\lib\framework\abstract\abstract_model.php (169)
abstract_sgbd_pdo -> update( 'utilisateur' , Array ( [Login] => edja [Pwd] => ae1c6bfd5c3839c765ab7c1bc00572167375e7bf [Nom] => EDJA [Prenoms] => OI EDJA JOSEPH [Tel] => 05 37 52 18 [Email] => edjajoseph@yahoo.fr [nbFail] => 0 [Date_creation] => 2017-11-15 [Code_pays] => CI [Groupe] => Administrateur ) , Array ( [Login] => 0 ) )
#4 C:\wamp\www\mkframework\lib\framework\abstract\abstract_row.php (65)
abstract_model -> update( )
#5 C:\wamp\www\mkframework\lib\framework\abstract\abstract_row.php (54)
abstract_row -> update( )
#6 C:\wamp\www\mkframework\data\genere\New_Passeport_project\model\model_utilisateur.php (141)
abstract_row -> save( )
#7 C:\wamp\www\mkframework\data\genere\New_Passeport_project\module\utilisateur\main.php (140)
row_utilisateur -> save( )
#8 C:\wamp\www\mkframework\data\genere\New_Passeport_project\module\utilisateur\main.php (66)
module_utilisateur -> processSave( )
#9 C:\wamp\www\mkframework\lib\framework\class_root.php (264)
module_utilisateur -> _edit( )
#10 C:\wamp\www\mkframework\data\genere\New_Passeport_project\public\index.php (47)
_root -> run( )
#11 {main}
---------------------------------------------------------------------------------------------------------------------------------------
------------STRUCTURE DE MA TABLE---------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `utilisateur` (
`Login` varchar(8) NOT NULL,
`Pwd` varchar(50) DEFAULT NULL,
`Nom` varchar(25) DEFAULT NULL,
`Prenoms` varchar(50) DEFAULT NULL,
`Tel` varchar(25) DEFAULT NULL,
`Email` varchar(25) DEFAULT NULL,
`nbFail` int(11) DEFAULT NULL,
`Date_creation` date DEFAULT NULL,
`Code_pays` varchar(4) DEFAULT NULL,
`Groupe` varchar(25) NOT NULL,
PRIMARY KEY (`Login`),
KEY `FK_UTILISATEUR_Code_pays` (`Code_pays`),
KEY `GId` (`Groupe`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
---------------------------------------------------------------------------------------------
----------------------MA FONCTION processSave DANS main------------
private function processSave(){
if(!_root::getRequest()->isPost() ){ //si ce n'est pas une requete POST on ne soumet pas
return null;
}
$oPluginXsrf=new plugin_xsrf();
if(!$oPluginXsrf->checkToken( _root::getParam('token') ) ){ //on verifie que le token est valide
return array('token'=>$oPluginXsrf->getMessage() );
}
$iId=_root::getParam('id',null);
if($iId==null){
$oUtilisateur=new row_utilisateur;
}else{
$oUtilisateur=model_utilisateur::getInstance()->findById( _root::getParam('id',null) );
}
$tColumn=array('Login','Pwd','Nom','Prenoms','Tel','Email','nbFail','Date_creation','Code_pays','Groupe');
foreach($tColumn as $sColumn){
$oUtilisateur->$sColumn=_root::getParam($sColumn,null) ;
}
if($oUtilisateur->save()){
//une fois enregistre on redirige (vers la page liste)
_root::redirect('utilisateur::list');
}else{
return $oUtilisateur->getListError();
}
}
------------------------------------------------------------------------------
NB: Si j'enlève 'Login dans array(), pas de bug, mais pas de modif. Si je met 'Login', j'ai l'erreur ci-dessus
En sommes, est il possible de faire udate sur une table qui n'a pas id auto_increment. si oui, comment?
Merci d'avance pour votre attention
Partager