Archief - PHP: id uit database lezen lukt niet

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Diabolical Dean

Legacy Member
simpel formulierke

PHP:
if(isset($_GET['submit']))
		{
			if($_GET['id'] == "")
			{
				print "Vul een id in";
			}
			else
			{				
				mysql_connect("localhost", "root");
				mysql_select_db("dm_db");
	
				$query = "SELECT * FROM mm3e WHERE ID = ".$_GET['id'];
				$result = mysql_query($query);
				

				if(mysql_num_rows($result) >= 1)
				{
					while($row= mysql_fetch_row($result))
					{
						echo $row['id']."<BR /> ".$row['Name']."<BR /> <BR />";

					}
				}
			}

Dus ik zie of ik men veldje heb, ik het in in mijn geval :p Ik ga naar men DB, ik doe een select en normaal moet ik dan de id en de naam krijgen maar ik krijg dit

Notice: Undefined index: id in c:\program files\easyphp1-8\www\monstermanual\index.php on line 30

Notice: Undefined index: Name in c:\program files\easyphp1-8\www\monstermanual\index.php on line 30

Hij zegt dat hij men varbiablen niet kent maar ik haal ze toch uit men DB??

Bedankt voor het antwoord :)

DarkBone

Legacy Member
De manual wel goed gelezen?
http://be2.php.net/manual/en/function.mysql-fetch-row.php

Returns a numerical array that corresponds to the fetched row.

De foutmeldingen slaan dus op het gebruik van namen om de gegevens uit de array te halen, terwijl de array enkel numerieke indexes kent om de waarden op te halen.

Je hebt mysql_fetch_assoc() nodig.
Dan krijg je een associatieve array ipv een numerieke.

Diabolical Dean

Legacy Member
Damnzor, zo lang achter zitten zoeken. Anyway, het werkt, hartelijk bedankt DarkBone. :) Nu kan ik verder.

Coax

Legacy Member
En vergeet uw input ni te controleren voor ge het in ne query steekt.

Diabolical Dean

Legacy Member
Merci :) alles lukt. Alleen nu nog in tabbellen steken wat gewoon een eentonig werkske is. Tis gewoon een formulierke voor monsters uit een DB te selecteren (D&D :$) en alles gaat bijna bestaan uit drop down menu's dus veel foute input moet ik ni verwachten. Nogmaals bedankt.

Coax

Legacy Member
Geef den url is :p.

Nee serieus: altijd input controleren. Vertrouw mij maar ;)

Aangezien ge het met GET mee geeft kunt ge die parameters ook gewoon aanpassen in den url.
Dmv sql injection kunt ge dan gewoon sql code uitvoeren.
Ge moet is hetvolgende in den url achter uwen id zetten:
PHP:
%20OR%201=1
En da is nog maar iets onschadelijks. Ik weet ni juist hoe, maar ik denk da ge op die manier ook drop tables en van die dingen kunt doen.

Ge pakt best 'intval($_GET["id"])' of zoiets. (En er bestaan nog andere trukken zoals mysqlclean())

maT'

Legacy Member
Coax zei:
En da is nog maar iets onschadelijks. Ik weet ni juist hoe, maar ik denk da ge op die manier ook drop tables en van die dingen kunt doen.

Ge pakt best 'intval($_GET["id"])' of zoiets. (En er bestaan nog andere trukken zoals mysqlclean())
een url als : monster.php?id=1; DROP TABLE leden;

maw: de queries scheiden met een puntkomma, en je sql-injection is gebeurd, en de tabel "leden" wordt gedropt.

het is dus idd een zeer goed idee je data te controleren, zelfs als je je formulieren met POST zou verzenden.
$id = (int) $_GET['id'];

PoMpElSiEn

Legacy Member
PHP:
 $query = "SELECT * FROM mm3e WHERE ID = ".$_GET['id']; 

moet worden

 $query = "SELECT * FROM mm3e WHERE ID = ".$_GET['id']."";

denkik toch ;s :)

Fr3aK

Legacy Member
Nah zo is goe maar ge kunt da op 1 lijn zette...
PHP:
mysql_query("SELECT * FROM mm3e WHERE ID = '$_GET['id']'");

Coax

Legacy Member
Blijkbaar zijn sommige posts in deze thread onzichtbaar voor 'PoMpElSiEn' en 'Fr3aK'.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan