webForumDet fria alternativet

Timestampfältet uppdaderas automatiskt

2 svar · 193 visningar · startad av GrodanBoll

GrodanBollMedlem sedan sep. 2001788 inlägg
#1

Hej hej

Jag har en nyhetstabell i mySQL:

newsId int(10) unsigned NOT NULL auto_increment,
  newsHeadlineswe varchar(100) NOT NULL default '',
  newsHeadlineeng varchar(100) NOT NULL default '',
  newsHeadlinelit varchar(100) NOT NULL default '',
  newsTextswe text NOT NULL,
  newsTexteng text NOT NULL,
  newsTextlit text NOT NULL,
  newsPostedBy varchar(150) NOT NULL default '',
  newsPostedByEmail varchar(150) NOT NULL default '',
  newsPostedWhen timestamp(10) NOT NULL,
  newsRedBy varchar(150) NOT NULL default '',
  newsRedByEmail varchar(150) NOT NULL default '',
  newsRedWhen timestamp(10) NOT NULL,

Fältet som strular är 'newsPostedWhen'. När jag kör en uppdatering av nyheten genom:

"UPDATE tblnews SET newsHeadlineswe = '".toDb($_REQUEST['newsHeadlineswe'])."', newsHeadlineeng = '".toDb($_REQUEST['newsHeadlineeng'])."', newsHeadlinelit = '".toDb($_REQUEST['newsHeadlinelit'])."', newsTextswe = '".toDb($_REQUEST['newsTextswe'])."', newsTexteng = '".toDb($_REQUEST['newsTexteng'])."', newsTextlit = '".toDb($_REQUEST['newsTextlit'])."', newsRedBy = '".toDb($_REQUEST['newsRedBy'])."', newsRedByEmail = '".toDb($_REQUEST['newsRedByEmail'])."', newsRedWhen = NOW() WHERE newsId = ".$_REQUEST['newsId']."";

Så uppdateras fältet fast jag inte har det med i frågan.
Varför blir det så? :q

Det kan tilläggas att om jag går in i phpMyAdmin och editerar en post på finns funktionen 'NOW' med automatiskt för fältet 'newsPostedWhen' men inte för 'newsRedWhen'. Vet inte om det har med saken att göra?

Ska denna frågan vara under MySQL-forumet så flytta gärna den. :)

/Grodan

MungoMedlem sedan jan. 2000372 inlägg
#2

Det första timestamp-fältet i en mySQL-tabell uppdateras ALLTID automatiskt när du gör en update på kolumnen. För att undvika det borde det funka att bara lägga till:

newsPostedWhen = newsPostedWhen

i din SQL-fråga. Om inte det funkar får du nog hämta ut det "gamla" värdet på newsPostedWhen först och sen sätta newsPostedWhen till det värdet när du gör din UPDATE.

OBS att det som sagt bara är det första timestamp-fältet som uppdateras automatiskt. Om du nån gång vill att även ett annat timestamp-fält ska uppdateras automatiskt sätter du det till NULL i din UPDATE:

newsPostedDate = NULL

...så uppdateras det!

GrodanBollMedlem sedan sep. 2001788 inlägg
#3

Äh, jag ville ju att det ibland skulle vara det första timestampfältet som skulle uppdateras och ibland det andra... blev matt till slut och bytte typ till datetime...

Tackar ändå :)

/G

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)