J'ai besoin d'insérer des enregistrements, mais si les enregistrements existent, remplacez-les à la place. Voici ce que je suis actuellement en utilisant:mySQL comment mettre à jour et remplacer
$sessionDate = date("Y-m-d H:i:s");
foreach($tmpVP as $sessionVP) {
$res = mysql_query("INSERT INTO sessions
(sessionID,sessionDate,sessionVS,sessionVP)
VALUES('$sessionID','$sessionDate','$sessionVS',
'$sessionVP')") ;
}
Ce que je vraiment besoin est de mettre à jour les dossiers correspondant à sessionID
, sessionVS
et sessionVP
et insérer de nouveaux enregistrements qui ne correspondent pas.
EDIT:
Tableau définition
CREATE TABLE `sessions` (
`ID` bigint(20) NOT NULL auto_increment,
`sessionID` varchar(36) NOT NULL,
`sessionDate` datetime NOT NULL,
`sessionUser` bigint(20) NOT NULL,
`sessionVS` varchar(255) NOT NULL,
`sessionVP` bigint(20) NOT NULL,
`reserved` int(11) NOT NULL,
PRIMARY KEY (`ID`),
KEY `ID` (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=88 DEFAULT CHARSET=utf8
idSession, sessionVP et sessionVS ne sont pas uniques. Exemple:
sessionID sessionDate sessionUser sessionVS sessionVP
0t1m58q9ktejuhqlrjqglcoia0 2010-06-20 09:20:53 0 111111 144268736
0t1m58q9ktejuhqlrjqglcoia0 2010-06-20 09:20:53 0 111111 144268819
0t1m58q9ktejuhqlrjqglcoia0 2010-06-20 09:20:53 0 111111 144268880
Donc, si j'ai un nouveau record avec 0t1m58q9ktejuhqlrjqglcoia0
, 111111
et `144268880' ai-je besoin de mettre à jour la ligne n ° 3 au lieu d'ajouter la ligne n ° 4.
Comme Mark Byers l'a suggéré, vérifiez l'entrée désinfectée avec par ex. 'mysql_real_escape_string' – DrColossos
Veuillez poster votre définition de table. 'SHOW CREATE TABLE sessions' –