Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

MySQL et DBD: insérer une date ?

3 réponses
Avatar
ctobini
Bonjour,

J'ins=E8re des donn=E9es dans une table MySQL 5.0 contenant entre autre un
champ `date` de type date (et oui... :-) ).

Mon code actuellement pour ins=E9rer la date est :

my $curdate;
my $sth_curdate =3D $dbh->prepare('SELECT CURDATE()');
$sth_curdate->execute;
while(my @r =3D $sth_curdate->fetchrow_array) { $curdate =3D $r[0] }
my $sth_ffreeze =3D $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 =E0 mettre directement en argument du
sprintf (comme un $dbh->func() ou autre) ?

En vous remerciant,

C=2E Tobini

3 réponses

Avatar
Jean-Baptiste Mazon
ctobini writes:
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.

Avatar
Lliane
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

Avatar
Stéphane Müller
"ctobini" a écrit dans le message de news:


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');