[SQL] Input field trekt waarden van elkaar af

Pagina: 1
Acties:
  • 317 views

Acties:
  • 0 Henk 'm!

  • manta
  • Registratie: Juni 2002
  • Laatst online: 22-11-2023
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?

Acties:
  • 0 Henk 'm!

  • Scrummie
  • Registratie: Februari 2003
  • Laatst online: 22-05 11:00

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


Acties:
  • 0 Henk 'm!

  • manta
  • Registratie: Juni 2002
  • Laatst online: 22-11-2023
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.

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Nu online

MueR

Admin Tweakers Discord

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.


Acties:
  • 0 Henk 'm!

  • manta
  • Registratie: Juni 2002
  • Laatst online: 22-11-2023
Ik heb nu mysql_real_escape_string toegepast, maar dat lost het probleem niet op.

Acties:
  • 0 Henk 'm!

  • 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
Het ergste moet nog komen / Het leven is een straf / Een uitgestrekte kwelling van de wieg tot aan het graf


Acties:
  • 0 Henk 'm!

  • PeterSelie
  • Registratie: December 2002
  • Laatst online: 19-05 11:09
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.

Acties:
  • 0 Henk 'm!

  • manta
  • Registratie: Juni 2002
  • Laatst online: 22-11-2023
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 :)

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
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.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • 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.

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09:47

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.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 04:09

.oisyn

Moderator Devschuur®

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 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Nu online

MueR

Admin Tweakers Discord

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.

Pagina: 1

Dit topic is gesloten.