Vraag & Antwoord

Webprogrammeren & scripting

[PHP & MySQL] - Query doet iets onmogelijks

4 antwoorden
  • G'day, Ik heb het volgende script (dit is een fragment ervan):[code:1:0d1aed6183] $res = mysql_query ("SELECT * FROM klas6b_users WHERE username='$username' AND password=md5('$password')", $db); if (mysql_num_rows ($res) != 0) { $ligne = mysql_fetch_object ($res); mysql_query ("UPDATE klas6b_users SET last_date_time=now() WHERE id='$ligne->id' LIMIT 1", $db); mysql_query ("UPDATE klas6b_users SET last_ip='$REMOTE_ADDR' WHERE id='$ligne->id' LIMIT 1", $db); session_register ("cookie_klas6b_id"); $cookie_klas6b_id = $ligne->id;[/code:1:0d1aed6183]Het probleem ligt in de eerste UPDATE query. Hier zou hij het veld last_date_time moeten veranderen naar de huidige datum. Dit doet hij zonder probleem. Het probleem is dat hij dit OOK DOET MET EEN ANDER VELD, namelijk het veld dob (= Date Of Birth voor de nieuwsgierigen). De twee velden zijn "timestamp(14)" maar er is zo nog een ander veld (namelijk date_time) waar hij niets verkeerds mee doet, hij verandert dat niet. Ik dacht: er staat ergens een query teveel die dat andere veld veranderd maar neen hoor, als ik de regel vercommentariseer (eer dus // voorzet :wink: ) dan zal hij dit niet meer doen, dan wordt bij het aanmelden enkel het veld last_ip veranderd. Ik zie niet in hoe dit mogelijk is, weet iemand raad? Greetz, BelgiumBoy_007
  • Het datatype [i:62d266fbc8]timestamp [/i:62d266fbc8]is je probleem. Kolommen met dit datatype zullen automatisch bijgewerkt worden naar de huidige datum/tijd bij een insert of update. Het datatype is dus alleen bruikbaar om een markering aan te brengen voor een wijziging in een row en niet voor het vastleggen van datum/tijd waarden, daarvoor zijn andere datum/tijd types aanwezig. De kolommen wijzigen naar DATE(TIME) zal het probleem oplossen.
  • Kan je me dan eens uitleggen waarom hij enkel met het veld last_date_time en dob doet en niet met het veld date_time? Het zijn bijden timestamps :-?
  • Alleen het eerste veld in een tabel met het datatype timestamp wordt bij een insert of update actie automatisch door MySQL bijgewerkt. Verander de volgorde van je velden en je probleem is opgelost.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.