ik wil graag user ids maken van de users die zich aanmelden.
dus een tabel in sql en daar dan 1, 2, 3 enz de tabel heb ik wel ik snap ook wel hoe je er info in krijgt maar kan hij ook de laatste user opzoeken in de data base en er dan +1 doen? iets met
UPDATE users SET user_id = user_id + 1;
maar dan heb ik niet de laatste dan doet die ze allemaal +1....
Het gebruik van auto_increment is de enige oplossing voor MySQL. In andere databases kun je table- en rowlocking gebruiken om er voor te zorgen dat niemand anders wat met de data doet, al slaat dat in dit geval ook nergens op.
Kortom, gebruik auto_increment.
Andere 'oplossingen' zullen vroeg of laat verkeerd gaan, bv. wanneer meerdere personen zich min of meer geljiktijd aanmelden. Dan krijgen 2 gebruikers hetzelfde nummer omdat de insert-query van gebruiker 1 nog niet was verwerkt toen gebruiker 2 het laatste nummer opvroeg...
Wanneer je ??? , weglaat (dus ook de komma) ben je klaar. De database zal het user_id zelf ophogen, deze hoef je dus helemaal nergens in jouw query op te nemen.
En waarom zou je nu dan weer een SELECT willen uitvoeren om weer overbodig te gaan rekenen met nummer? Dat snap ik even niet.
Met de php-functie mysql_insert_id() krijg je het laatst ingevoerde id.
Maar nogmaals, ga in vredesnaam geen conclusies verbinden aan dit nummer, dit is uitsluitend voor de database van belang. Jij doet daar helemaal niets mee!
nou mijn bedoeling was om dat id te gebruiken als je hebt ingelogd die ook in een sessie te zetten zodat je niet het password en username mee hoeft te nemen in de sessie .. lijkt mij veiliger
nou mijn bedoeling was om dat id te gebruiken als je hebt ingelogd die ook in een sessie te zetten zodat je niet het password en username mee hoeft te nemen in de sessie .. lijkt mij veiliger
Dan is mysql_insert_id() dé aangewezen functie om het juiste id op te vragen. Een SELECT-query is trouwens ook niet betrouwbaar, tussentijds kan iemand anders zich al hebben aangemaakt.
En inderdaad, een password zet je nooit en te nimmer in een sessie of cookie. Het is volkomen onzinnig en nog eens onveilig ook.
Waarom wil je de username en het password weten? Nergens voor nodig. Je telt gewoon het aantal records dat aan de voorwaarde voldoen. En omdat username UNIQUE als eigenschap heeft, kan dit slechts 0 of 1 record zijn.
SELECT
COUNT(1) AS login
FROM
tabelnaam
WHERE
username = '$username'
AND
password = '$pass'
De query geeft 'login' retour, met de waarde 0 of 1.
En ik zou niet weten waarom je de username en/of het password in een sessie of cookie zou moeten zetten. Dat heb je echt nooit nodig en is altijd een veiligheidsprobleem. Niet doen dus.
maar als ik dan naar een ander pagina ga moet het niet zo wezen dat je alles weer opnieuw moet invullen... daarom zou er toch wel iets in de sessie moeten zetten en daarom sla ik zijn ip en user_id op in een sesie en na de sessie voor 2uur laten werken .. daarna is degene automatische uitgelogd
Ja, en? De username heb je toch al? Die heeft de gebruiker net opgegeven, anders kun je de query niet eens uitvoeren. Waarom zou je een gegeven dat je al hebt, nog een keer opvragen? Nergens voor nodig, zodra de query aangeeft dat 'login' de waarde 1 heeft, maak jij een sessie aan waar je $username in zet. En klaar ben je.