Mise à jour de la base de données MySQL

csi_bern -  
giheller Messages postés 1960 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

J'ai conçu la base MySQL ainsi :
CREATE TABLE IF NOT EXISTS `ma` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `vorname` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `ak` varchar(4) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `geb` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `intern` int(4) NOT NULL,
  `npa` int(4) NOT NULL,
  `stadt` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `strasse` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `mobile` varchar(15) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `privat` varchar(15) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `gruppe` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `pos` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `fg1` varchar(2) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `fg2` varchar(2) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `fg3` varchar(2) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `fg4` varchar(2) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `fg5` varchar(2) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=68 ;


Le problème est que quand je veux faire une mise à jour d'entrées (que je fais à partir d'une page php qui reprends tous les enregistrements en les classant dans des inputs), les champs "stadt" et "gruppe" (et uniquement ceux-là) ajoute à chaque fois un espace après la valeur (donc 5 mises à jour = 5 échappements).

J'ai contrôlé, dans la reprise de mes inputs, je n'insère pas de caractère d'échappement.

Merci d'avance pour les réponses
A voir également:

2 réponses

giheller Messages postés 1960 Date d'inscription   Statut Membre Dernière intervention   146
 
bonsoir,

la longueur de la requête ainsi générée est peut être plus grande que le buffer, d'où ce découpage.
recomposez votre requête en plusieurs fois

exemple

$query = ...
$query .= la suite
...
0
csi_bern
 
Merci Giheller,

Malheureusement, même en décomposant comme suit, les mêmes problèmes apparaissent :
$query ="UPDATE ma SET id = '$id', name = '$name', vorname = '$vorname', ak = '$ak', geb = '$geb',";
$query .="intern = '$intern', npa = '$npa', stadt = '$stadt', strasse = '$strasse',";
$query .= "mobile = '$mobile', privat = '$privat', gruppe = '$gruppe', pos = '$pos', fg1 = '$fg1', fg2 = '$fg2',";
$query .="fg3 = '$fg3', fg4 = '$fg4', fg5 = '$fg5'";
		
mysql_query($query.' WHERE id = '.$ligne['id']);
0
giheller Messages postés 1960 Date d'inscription   Statut Membre Dernière intervention   146
 
bonjour
essaie ainsi

$query ="UPDATE ma SET id = '".$id."', name = '".$name."', vorname = '".$vorname."', ak = '".$ak."', geb = '".$geb."',";
$query .="intern = '".$intern."', npa = '".$npa."', stadt = '".$stadt."', strasse = '".$strasse."',";
$query .= "mobile = '".$mobile."', privat = '".$privat."', gruppe = '".$gruppe."', pos = '".$pos."', fg1 = '".$fg1."', fg2 = '".$fg2."',";
$query .="fg3 = '".$fg3."', fg4 = '".$fg4."', fg5 = '".$fg5."'";
0