login  Naam:   Wachtwoord: 
Registreer je!
 Forum

INT veld updaten zonder select

Offline Guardian - 28/08/2008 22:38 (laatste wijziging 28/08/2008 22:46)
Avatar van GuardianNieuw lid Hey allemaal,

Ik zou graag het veld "refers" updaten met +1, maar liefst zonder eerst een opvraging te moeten doen. Ik vond:
  1. $q = "UPDATE users SET refers+1 WHERE id='".$_SESSION['UserID']."' ";


En ook:
  1. $q = "UPDATE users SET refers='refers+1' WHERE id='".$_SESSION['UserID']."' ";


Maar ook dit lukt niet.. 
Kan iemand even helpen?

titjes schreef:
CODETAGS gebruiken, ook voor maar 1 regel code!!!

7 antwoorden

Gesponsorde links
Offline yetti4 - 28/08/2008 22:50
Avatar van yetti4 JS interesse dat kan natuurlijk niet. Je moet eerst weten wat de value is, voordat je het opslaat ;)
Offline skillat2 - 28/08/2008 22:57 (laatste wijziging 28/08/2008 23:00)
Avatar van skillat2 HTML beginner Net getest, zo update je refers +1.

  1. $q = "UPDATE users SET refers=refers+1 WHERE id = '".$_SESSION['UserID']."'";

edit: vergeet niet als UserID een integer is (wat zeer waarschijnlijk is ,ID  ). Dan kan je beter het volgende doen:

  1. $q = "UPDATE users SET refers=refers+1 WHERE id = ".$_SESSION['UserID'];
Offline Diko - 03/09/2008 19:34
Avatar van Diko PHP interesse Dat laatste kan ik afraden. Als $_SESSION['UserID'] leeg is zul je een foutmelding krijgen van de MySQL server. Als er toch haakjes omheen zet, dan krijg je met bijv. mysql_num_rows() 0 terug.

Kun je veel netter controleren en je houdt de logs van je mysql server ook nog eens schoon ;)
Offline Martijn - 03/09/2008 19:53
Avatar van Martijn Crew PHP volgens mij kun je ook doen
refers+=1
Maar dat weet ik niet zeker nog
Offline Diko - 06/09/2008 09:19
Avatar van Diko PHP interesse Nog even een aanvulling. Je kunt type hinting gebruiken, dus zet neer:
  1. $q = "UPDATE users SET refers=refers+1 WHERE id = '". (int)$_SESSION['UserID'] ."';";


Hiermee voorkom je weer voor een deel MySQL insertion doordat er alleen integers ingevoerd kunnen worden.
Offline Abbas - 06/09/2008 10:58
Avatar van Abbas Gouden medaille

Crew .NET
Diko, je query is verkeerd, het moet dit zijn:
  1. $q = "UPDATE users SET refers=refers+1 WHERE id = '". (int)$_SESSION['UserID'] ."' ";
Je had een ';' te veel staan vanachter!
Offline Kr4nKz1n - 06/09/2008 11:19 (laatste wijziging 06/09/2008 11:34)
Avatar van Kr4nKz1n Onbekend
  1. $q = "UPDATE users SET refers=refers+1 WHERE id = ".Mysql_Real_Escape_String($_SESSION['UserID']);


Beter om een functie te maken met alle 'filters'.

Bijv:
  1. function Filter($sType)
  2. {
  3. Switch($sType, $sText)
  4. {
  5. Case 'sql':
  6. return Mysql_Real_Escape_String($sText);
  7. Break;
  8. Case 'html':
  9. return HtmlSpecialChars($sText);
  10. Break;
  11. }
  12. }


Kun je gelijk meerdere filters in doen.

Dan wordt het
  1. $q = "UPDATE users SET refers=refers+1 WHERE id = ".Filter('sql', $_SESSION['UserID']);


Is ook veel makkelijker te onthouden dan Mysql_Real_Escape_String() 

edit again
Nog iets schoot me te binnen,
ik snap gewoon niet waarom heel veel mensen er niet gelijk Mysql_Query() bij zetten. Scheelt je regels etc. Maar ieder z`n ding.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.273s