[PHP & MYSQL] Problemen met inserten van data in DB*

Pagina: 1
Acties:
  • 33 views sinds 30-01-2008

  • Moneta
  • Registratie: Augustus 2006
  • Laatst online: 01-12-2021
Hoop dat ik goed zit. Ik zit met een probleempje, ben er nu 2 dagen mee bezig om het net af te zoeken en van alles te proberen maar ik krijg het niet voor mekaar, misschien jullie wel.

Ik heb een HTML formulier die opzich prima werkt. De eerste 3 invoervelden in ieder geval. Alles wat ik daar invoer word ook in MySQL gezet. Echter de 4de veld vormt een probleem. Om het misschien wat makkelijker te maken laat ik de code maar zien.

HTML form
code:
1
2
3
4
<tr>
<td>Product Type:</td>
<td><input type="text" name="Prod_Typ" /></td>
</tr>

Hier vul ik een cijfer in. 1 voor moederborden, 2 voor videokaarten etc.

Nadat er op submit gedrukt word gaat het naar een php script die het in mysql zet.

PHP script
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
include("mysql.php");

$sql="INSERT INTO Prod_Base (Name, Modell, version, merkmale, varianten, Prod_typ)
VALUES
('$_POST[Name]','$_POST[Modell]','$_POST[version]','$_POST[Merkmale]','$_POST[varianten]','$_POST[Prod_typ]')";

if (!mysql_query($sql))
  {
  die('Error: ' . mysql_error());
  }
echo "New Product added";

mysql_close($con)
?>


Het draait uiteindelijk om Prod_typ, deze heeft in de database een int(11) type.
Als ik op submit druk krijg ik de volgende error: Error: Out of range value adjusted for column 'Prod_typ' at row 1.
Verander ik Int(11) in varchar of text dan word de nieuwe product wel verstuurd maar Prod_Typ word dan niet ingevuld.

Ik hoop dat iemand iets ziet wat ik verkeerd doe. Misschien moet ik in me php script aangeven dat Prod_typ een Int veld is? Ik hoop dat iemand het snapt... Alvast bedankt voor elke hulp die gegeven word.

[ Voor 0% gewijzigd door whoami op 31-08-2006 11:55 ]

That's the way the cookie crumbles.


  • thaan
  • Registratie: Oktober 2004
  • Laatst online: 20:38
Ik kan je niet zo de oplossing geven, maar kan je wel zeggen dat dit zeer onveilig is, en iemand zo je hele database kan verneuken.

Nooit zomaar client ingevoerde data rechtstreeks in de database invoeren: client invoer is per definitie áltijd onveilig.

Door gebruik van variabelen kun je dit simpel oplossen

$name = addslashes($_POST['name']);

En dan $name in je database inserten, ben je iig van dit euvel af.

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:35
Dit heeft niets met software engineering te maken en is eerder een PRG probleem.
Zoals Thaan al zegt, is het echter een gevaarlijke manier om je gegevens in je DB te zetten.

Heb je trouwens al eens de SQL query die je maakt naar het scherm afgebeeld, zodanig dat je ziet wat er daadwerkelijk naar de DB gestuurd wordt ? Op die manier zal je ws makkelijk de oplossing vinden.

(Ipv quote tags te gebruiken voor het posten van code, gebruik je beter code-tags. Ik heb het ff voor je aangepast
Ik heb ook even je titel aangepast, let daar aub op in het vervolg)

SEA-> PRG

https://fgheysels.github.io/


  • Moneta
  • Registratie: Augustus 2006
  • Laatst online: 01-12-2021
Bedankt voor het verplaatsen!

Ik ben niet bang dat iemand de database verkloot, deze pagina's zullen alleen door mij en me collega's gebruikt worden.. zal niet vanaf het net beschikbaar zijn zeg maar.

That's the way the cookie crumbles.


  • BHR
  • Registratie: Februari 2002
  • Laatst online: 06-02 11:38

BHR

input name="Prod_Typ"
en
'$_POST[Prod_typ]')";

hoofd- en kleine letters door elkaar?

No amount of key presses will shut off the Random Bug Generator


  • Moneta
  • Registratie: Augustus 2006
  • Laatst online: 01-12-2021
Je bent geweldig BHR!
ik kan echt niet geloven dat ik hier 2 dagen mee bezig ben geweest.. hoofdletters...

Mag een slotje op :) pfffffffff

nogmaals dank je wel!

That's the way the cookie crumbles.


Verwijderd

Misschien wat naast de kwestie, maar een beetje value-checking voor je alles in de dbase gooit zou geen overbodige luxe zijn.

Moest je dat gedaan hebben dan had je je probleem zelf al lang gevonden...

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:35
Moneta schreef op donderdag 31 augustus 2006 @ 12:24:
Je bent geweldig BHR!
ik kan echt niet geloven dat ik hier 2 dagen mee bezig ben geweest.. hoofdletters...

Mag een slotje op :) pfffffffff

nogmaals dank je wel!
Tja... eigenlijk kon je dat zelf wel gevonden hebben mits een beetje debugwerk (bv eens kijken wat er nu eigenlijk naar de DB gestuurd wordt, door je query te echo'en).

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.