Toon posts:

[SQL] Input field trekt waarden van elkaar af

Pagina: 1
Acties:
  • 293 views

  • manta
  • Registratie: Juni 2002
  • Laatst online: 02-12-2021
Ik heb een form gemaakt waarin één van de fields een typenummer kan bevatten met een minus teken (bijv 325-024). Schrijf ik dit echter naar de database dan verschijnt daar het nummer 301. Het lijkt er dus sterk op dat de cijfers van elkaar afgetrokken worden vóór het wegschrijven.

Hoe onstaat dit? En hoe kan ik dit gemakkelijk oplossen?

  • Scrummie
  • Registratie: Februari 2003
  • Nu online

Scrummie

Think different

Dat is geen HTML, en relevante code zou handig zijn. Gokje alvast; je moet de waarde van dat input veld filteren op speciale karakters, zodat (gokje) PHP het -teken niet als euh, min teken ziet.

Seizoenskaarthouder Feyenoord - Vak T


  • manta
  • Registratie: Juni 2002
  • Laatst online: 02-12-2021
Je hebt gelijk, is eigenlijk wel php..

Wat ik doe is eigenlijk heel simpel. Globaal:

code:
1
2
3
4
5
6
7
8
Eerst vang ik de ingevulde waarde op in een form:
<input name="serienummer" type="text" />

De waarde stop ik in een variabele:
$serienummer=$_POST["serienummer"];

Dan schrijf ik de variabele naar de database:
UPDATE products SET serienummer=$serienummer WHERE id=$id";


Uiteraard zit daar meer code omheen, maar dit is wat ik zo ongeveer doe. Niet veel meer.

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 09:04

MueR

Moderator Devschuur®

is niet lief

Je schrijft het weg naar een database? Dus je query ziet er uit als
SQL:
1
UPDATE MyTable SET MyField = 325-024 WHERE MyId = 1

Lees even over SQL injection, is dat probleem ook opgelost.

Anyone who gets in between me and my morning coffee should be insecure.
Breng nu uw applicatie naar de kloot. Dat is veel beter! Nu samen met klootopslag. Voor maar €9,95. Doei doei!


  • manta
  • Registratie: Juni 2002
  • Laatst online: 02-12-2021
Ik heb nu mysql_real_escape_string toegepast, maar dat lost het probleem niet op.

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Waarom pas je iets toe als je niet weet wat het doet? Kijk nou eens goed naar de query die wordt uitgevoerd, echo die eens voordat je 'm aan MySQL voert. Hint: je hebt aanhalingstekens nodig.

[Voor 11% gewijzigd door CodeCaster op 07-07-2011 10:58]

https://oneerlijkewoz.nl
I have these thoughts / so often I ought / to replace that slot / with what I once bought / 'cause somebody stole my car radio / and now I just sit in silence


  • PeterSelie
  • Registratie: December 2002
  • Laatst online: 11:44
De mysql_real_escape_string is dan ook niet bedoelt om dergelijke problemen op te lossen maar om er voor te zorgen dat men niet zomaar klakkeloos commando's in je query neer kan plempen.

Probeer het eens als volgt:
SQL:
1
UPDATE MyTable SET MyField = "325-024" WHERE MyId = 1


Zie de quotes om je waarden, in jou geval wordt de input gezien als int en wordt de berekening die je meegeeft dus opgelost. In het andere wordt de meegegeven waarde gezien als string en dus as-is opgeslagen.

  • manta
  • Registratie: Juni 2002
  • Laatst online: 02-12-2021
SoaDmaggot schreef op donderdag 07 juli 2011 @ 10:58:
De mysql_real_escape_string is dan ook niet bedoelt om dergelijke problemen op te lossen maar om er voor te zorgen dat men niet zomaar klakkeloos commando's in je query neer kan plempen.

Probeer het eens als volgt:
SQL:
1
UPDATE MyTable SET MyField = "325-024" WHERE MyId = 1


Zie de quotes om je waarden, in jou geval wordt de input gezien als int en wordt de berekening die je meegeeft dus opgelost. In het andere wordt de meegegeven waarde gezien als string en dus as-is opgeslagen.
Kijk, aan dat soort comments heb ik nog eens wat :)

  • RobIII
  • Registratie: December 2001
  • Laatst online: 11:16

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

manta schreef op donderdag 07 juli 2011 @ 11:07:
[...]


Kijk, aan dat soort comments heb ik nog eens wat :)
Give a man a fish and feed him for a day. Teach a man how to fish and feed him for a lifetime.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • Room42
  • Registratie: September 2001
  • Niet online
@RobIII, precies mijn gedachte :) Handig dat hij het voorgekauwd krijgt, daar heb je wat aan.

Maar goed, soms heb je even wat extra licht nodig om het te kunnen zien. Dan is het fijn dat iemand voor wie het gesneden koek is, hem even inkopt.

Blokkeert alle ads en trackers met:
- uBlock Origin
- uMatrix
- en Pi-Hole voor de rest van het netwerk.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 05-06 10:41

NMe

Quia Ego Sic Dico.

manta schreef op donderdag 07 juli 2011 @ 11:07:
[...]

Kijk, aan dat soort comments heb ik nog eens wat :)
Sorry hoor, maar die schiet me echt even in het verkeerde keelgat. Als jij niet uit de eerdere comments en uit de door jou ervaren symptomen kan halen dat je een sommetje uit aan het rekenen bent in plaats van dat je een string in je database zet dan ligt dat toch écht aan jou. Ga dan niet de mensen die wel geprobeerd hebben je te helpen beledigen door kort en beknopt te zeggen dat je niks aan hun antwoorden hebt gehad. Als je snelle, kant en klare fixes wil zit je hier verkeerd.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:28

.oisyn

Moderator Devschuur® / Cryptocurrencies

Demotivational Speaker

RobIII schreef op donderdag 07 juli 2011 @ 11:11:
Give a man a fish and feed him for a day. Teach a man how to fish and feed him for a lifetime.
Try to teach a man not willing to learn and he will disprove of your efforts and be dependent on others for a lifetime. Some men are best left unfed.

[Voor 16% gewijzigd door .oisyn op 07-07-2011 11:50]

If I had a dollar for every time I didn't know what was going on, I'd be like: "Why am I always getting all this money?!"


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 09:04

MueR

Moderator Devschuur®

is niet lief

Goed, met de bovenstaande posts van RobIII, NMe en .oysin, de Quickstart en Devschuur® Beleid - Help, mijn script werkt niet (goed) is dit topic wel klaar.

We zijn hier geen debug service.

Anyone who gets in between me and my morning coffee should be insecure.
Breng nu uw applicatie naar de kloot. Dat is veel beter! Nu samen met klootopslag. Voor maar €9,95. Doei doei!

Pagina: 1

Dit topic is gesloten.


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee