le 24/08/2008 à 18:44
jackbocar
Bonjour
Un problème que je n'avais jamais rencontré :
Lorsque j'envoie un enregistrement dans ma table, j'ai un saut sur les ID.
Je m'explique, si mon incrémentation est à 30, j'envoie un enregistrement qui doit avoir ID 31, j'ai bien cette ID, mais elle est vide de titre et de texte, seule la date apparait, par contre l'ID 32 elle est correctement enregistrée.
Si j'enlève les protections : mysql_escape_string() tout fonctionne bien ?
Mon code :
Ma table :
DROP TABLE IF EXISTS `news`;
CREATE TABLE `news` (
`id` int(11) unsigned NOT NULL auto_increment,
`date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`titre` varchar(255) NOT NULL,
`news` longtext NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=37 ;
Merci de votre aide
Jack Bocar
Un problème que je n'avais jamais rencontré :
Lorsque j'envoie un enregistrement dans ma table, j'ai un saut sur les ID.
Je m'explique, si mon incrémentation est à 30, j'envoie un enregistrement qui doit avoir ID 31, j'ai bien cette ID, mais elle est vide de titre et de texte, seule la date apparait, par contre l'ID 32 elle est correctement enregistrée.
Si j'enlève les protections : mysql_escape_string() tout fonctionne bien ?
Mon code :
<?php
$hostname = 'localhost';
$username = 'jackbocar';
$password = 'XXXXXXXXX';
$dbname = 'XWXXXXXX';
try {
$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
if (isset($_POST['titre']) && isset($_POST['news'])) {
$sql = 'INSERT INTO news (titre, news) VALUES (:titre, :news)';
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':titre', mysql_escape_string($_POST['titre']));
$stmt->bindParam(':news', mysql_escape_string($_POST['news']));
$stmt->execute();
echo 'News Enregistrée.';
}
?>
Ma table :
DROP TABLE IF EXISTS `news`;
CREATE TABLE `news` (
`id` int(11) unsigned NOT NULL auto_increment,
`date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`titre` varchar(255) NOT NULL,
`news` longtext NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=37 ;
Merci de votre aide
Jack Bocar