Avatar billede x4all_dk Nybegynder
03. juni 2004 - 10:36 Der er 7 kommentarer og
2 løsninger

problem med MySQL - PHP : MySQL default værdi ved UPDATE ?

Hejsa Eksperter!

Følgende giver mig kvaler og jeg håber at der findes folk
som kan hjælpe.

I MySQL er [tid] af typen->"datetime" default->"0000-00-00 00:00:00". 

Jeg har en funktion som opdaterer [tid] men nogle
gange bliver den sat til "0000-00-00 00:00:00" selvom jeg "indsætter" en helt anden tid!

Hvorfor gør den dog det ?
- og hvordan får jeg den til at virke ?


Følgende kode skulle gerne belyse problemet:

function update_tid($id,$tid) 
  { 
      $tid = $tid + date("YmdHis");
      echo "<br>TID = ".$tid;
      $query = "UPDATE Bruger SET tid='".$tid."' WHERE bruger_id='".$id."'";
      $this->query($query);
     
        // debug "0000-00-0 00:00:00" problem
      $query = "SELECT tid from Bruger WHERE id='".$id."'";
      $row = mysql_fetch_row($this->query($query));
      if ($row[0]=="0000-00-00 00:00:00")
        {       
          echo "<br> 0000-00-00 00:00:00 <br>";
            echo "<br>TID: ".$tid."<br>"; // f.eks. 2004-..etc
          exit;
        }
    // DEBUG slut
  }
Avatar billede taskmgr Nybegynder
03. juni 2004 - 11:05 #1
Hvilket format giver du som argument til din funktion ($tid)?
Avatar billede x4all_dk Nybegynder
03. juni 2004 - 11:09 #2
$tid er en integer

Følgende er et udskrift når det er gået "galt"
( ca. hver 5. gang for jeg fejlen... vil jeg tro)
-----
0000-00-00 00:00:00
TID: 20040603111362
-----
Avatar billede knudx Nybegynder
03. juni 2004 - 11:17 #3
jeg fatter ikke den her linie

$tid = $tid + date("YmdHis");

returnerer date(...) ikke en streng - og du kan ikke sammensætte to strenge med +...
Tror du ikke det bør være $tid += time() eller noge i den retning?
Avatar billede knudx Nybegynder
03. juni 2004 - 11:23 #4
den udskrift du viser er et ulovligt klokkeslet
20040603111362 ==>
2004-06-03 11:13:62 ==>

62 sekunder, det må man ikke, derfor 000000000000 resultat.
J.
Avatar billede taskmgr Nybegynder
03. juni 2004 - 11:26 #5
Ja, det må da være noget lig dette du skal bruge:?

$tid = $tid + time();
echo "<br>TID = ".$tid;
$dbtid = date("Y-m-d H:i:s", $tid);
$query = "UPDATE Bruger SET tid='".$dbtid."' WHERE bruger_id='".$id."'";
Avatar billede x4all_dk Nybegynder
03. juni 2004 - 11:28 #6
knudx -> damn!  YES!  Jeg bruge tidligere Unix tid... den som arbejder i sekunder alene,
og denne kan self. ikke finde ud af at det på samme måde :-) 

Tak Tak.  du har spottet fejlen... nu må jeg som om jeg kan rette den :I)
Avatar billede x4all_dk Nybegynder
03. juni 2004 - 11:38 #7
Smid lige et svar begge to
knudx for 50 point for at spotte fejlen (som jeg IKKE kunne)
og taskmrg 10 for en mulig løsning.
Avatar billede knudx Nybegynder
03. juni 2004 - 11:38 #8
check evt mysql funktionen som hedder DATE_ADD (date, INTERVAL expr type)
Avatar billede taskmgr Nybegynder
03. juni 2004 - 11:42 #9
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester