Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[php]parse error

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

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 08:08
Ik heb zelf een stukje code geproduceerd om een hyperlink uit een mysql database te produceren. Ik krijg echter een parse-error bij de regel waar de <a href geproduceerd wordt. Ik gok dat ergens een " verkeerd staat, maar ik zie het niet. Kan iemand mij wellicht opheldering geven?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
include("../../../config.php");
$var1=$_GET['var1'];
if($var1==""){$var1="type"; }
$var2=$_GET['var2'];
if($var2==""){$var2="hyperlink"; }
$var3=$_GET['var3'];
if($var3==""){$var3="naam"; }

$result = mysql_query("SELECT * FROM linkspaul ORDER BY ".$var1." ASC);
?>

<?
while($row = mysql_fetch_array($result))
{
echo "<a href="" . $row['hyperlink'] . ""> . $row['naam'] . "</a><br />"";
}
mysql_close($connect);
?>


De fout zit dus in de echo. De tabel die ik heb heeft 3 rijen: naam, hyperlink en type. Type wordt op gesorteerd, maar komt nu nog niet terug. Komt evt. later nog.
Volgens mij klopt het zo, maar blijkbaar toch niet

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

PHP:
16
echo "<a href=\"" . $row['hyperlink'] . "\">" . $row['naam'] . "</a><br />";


Maar als iemand een ' in $_GET['var1'] steekt, dan gaat je query al over kop.

[ Voor 32% gewijzigd door Snake op 04-09-2007 18:59 ]

Going for adventure, lots of sun and a convertible! | GMT-8


  • Palomar
  • Registratie: Februari 2000
  • Niet online
of echoën met ' ' ipv. " ".

  • Duroth
  • Registratie: Juni 2007
  • Laatst online: 27-04-2016

Duroth

No rest for the tweaked

Om maar even door te gaan op Snake's (juiste) antwoord:

Je bent dus, in de code, vergeten de 'HTML-aanhalingstekens' te escapen. Omdat PHP zonder voorafgaande \ een dubbel aanhalingsteken als code zal interpreteren, en niet als output (HTML), klopt er opeens niks meer van de regel. Gewoon op de juiste plekken een backslash erin zetten (zie Snake's post) en alles werkt.

  • ibmos2warp
  • Registratie: Januari 2007
  • Laatst online: 20-11-2023

ibmos2warp

Eval is Evil

Laten we leuk wat appelstrofs platen, maakt toch niet uit dat de code in de war gaat? :)

Escape en / of Addslashes de zooi.

edit:
spuit elf.

[ Voor 26% gewijzigd door ibmos2warp op 04-09-2007 19:09 ]

Ik weet alles van niks
Vind Excel ongelovelijk irritant.


  • Johnny
  • Registratie: December 2001
  • Laatst online: 13:48

Johnny

ondergewaardeerde internetguru

Zoals hierboven al gezegd wordt moet je enkele aanhalingstekens gebruiken of een backslash ervoor zetten, anders denkt de parser dat het einde bereikt is waarna een punt of een punt-komma geldige tekens zijn, nog een aanhalingsteken niet.

Let wel op wanneer je escape characters zoals \n \r \t \\ binnen enkele aanhalingstekens zet worden ze letterlijk genomen, '\\' geeft \\ terug en "\\" geeft \ terug.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


  • Psychokiller
  • Registratie: Oktober 2001
  • Niet online
Behalve dat dit wel vrij basic is, heb je ook een " vergeten in je query zelf, na de ASC.
Alleen al door de parser kun je zien dat dingen niet goed gekleurd zijn en dat de HTML en PHP code door elkaar lopen.

  • robbert
  • Registratie: April 2002
  • Laatst online: 30-11 13:41
En zullen we de sql-injections ook niet vergeten... Ongecontroleerd een variabelen in een query proppen is natuurlijk not done.

Daarnaast gaat de query ook al mis als je uberhaupt een bier bestaande kolom naam in die $var1 krijgt.

[ Voor 71% gewijzigd door robbert op 04-09-2007 19:34 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Dit is toch echt een gevalletje code debuggen en gewoon even de quotes bij elkaar matchen. Je ziet hier de highlighter al de fout aangeven, maar een beetje IDE doet dat ook voor je. Zie ook Debuggen: Hoe doe ik dat?. Omdat dit vrij basic is en ik verder geen discussiewaarde hierin zie (en alleen nog maar meer van bovenstaande reacties verwacht die verder, na deze reacties weinig zullen toevoegen) gaat dit topic dan ook op slot.

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

Pagina: 1

Dit topic is gesloten.