MySQL et DBD: insérer une date ?

Le
ctobini
Bonjour,

J'insère des données dans une table MySQL 5.0 contenant entre autre un
champ `date` de type date (et oui :-) ).

Mon code actuellement pour insérer la date est :

my $curdate;
my $sth_curdate = $dbh->prepare('SELECT CURDATE()');
$sth_curdate->execute;
while(my @r = $sth_curdate->fetchrow_array) { $curdate = $r[0] }
my $sth_ffreeze = $dbh->do( sprintf "INSERT INTO freeze (freeze_name,
date) VALUES (%s, %s)", $dbh->quote('proto'), $dbh->quote($curdate) );

Y aurait-il un moyen plus simple à mettre directement en argument du
sprintf (comme un $dbh->func() ou autre) ?

En vous remerciant,

C. Tobini
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-Baptiste Mazon
Le #153226
ctobini
J'insère des données dans une table MySQL 5.0 contenant entre autre un
champ `date` de type date (et oui... :-) ).

Mon code actuellement pour insérer la date est :

my $curdate;
my $sth_curdate = $dbh->prepare('SELECT CURDATE()');
$sth_curdate->execute;
while(my @r = $sth_curdate->fetchrow_array) { $curdate = $r[0] }
my $sth_ffreeze = $dbh->do( sprintf "INSERT INTO freeze (freeze_name,
date) VALUES (%s, %s)", $dbh->quote('proto'), $dbh->quote($curdate)
);

Y aurait-il un moyen plus simple à mettre directement en argument du
sprintf (comme un $dbh->func() ou autre) ?


On dérive de Perl, mais est-ce qu'il n'est as possible en MySQL
d'insérer CURDATE() directement, sans avoir à passer par un SELECT
préalable? Ou peut-être est-ce voulu, pour garantir que la date
insérée soit la même pour tous les enregistrements?

Quoi qu'il en soit, j'aurais plutôt utilisé la requête immédiate (type
do) pour la requête unique, et la requête préparée pour celle qui est
répétée. Ça permettrait d'utiliser des placeholders et de laisser le
sale boulot de quoting au bind de DBI.

Lliane
Le #153225
Bonjour,

J'insère des données dans une table MySQL 5.0 contenant entre autre un
champ `date` de type date (et oui... :-) ).

Mon code actuellement pour insérer la date est :

my $curdate;
my $sth_curdate = $dbh->prepare('SELECT CURDATE()');
$sth_curdate->execute;
while(my @r = $sth_curdate->fetchrow_array) { $curdate = $r[0] }
my $sth_ffreeze = $dbh->do( sprintf "INSERT INTO freeze (freeze_name,
date) VALUES (%s, %s)", $dbh->quote('proto'), $dbh->quote($curdate) );

Y aurait-il un moyen plus simple à mettre directement en argument du
sprintf (comme un $dbh->func() ou autre) ?

En vous remerciant,

C. Tobini

C'est la date actuelle que tu veux insérer?


--
How are you gentlemen? All your base are belong to us.
-=> Depiets Simon || EPITA || Promo 2011 || Spé B2 <=-
Lliane.com

Stéphane Müller
Le #153224
"ctobini"

my $curdate;
my $sth_curdate = $dbh->prepare('SELECT CURDATE()');
$sth_curdate->execute;
while(my @r = $sth_curdate->fetchrow_array) { $curdate =
$r[0] }
my $sth_ffreeze = $dbh->do( sprintf "INSERT INTO freeze
(freeze_name,
date) VALUES (%s, %s)", $dbh->quote('proto'),
$dbh->quote($curdate) );

Y aurait-il un moyen plus simple à mettre directement en
argument du
sprintf (comme un $dbh->func() ou autre) ?


Perso j'aurai eu tendance à utiliser "do" dans sa 3ème forme:

$rows = $dbh->do($statement,%attr,@bind_values);

Ce qui donnerai:

my $sth_ffreeze = $dbh->do(
q{ INSERT INTO freeze (freeze_name,date) VALUES
(?,CURDATE()) },
undef,
'proto');

Publicité
Poster une réponse
Anonyme