[PHP] Variabele in SQL-statement

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Cerntje
  • Registratie: September 2003
  • Laatst online: 09-09 06:57
ik heb voor school een opdracht gemaakt met PHP. Dit is mijn eerste opdracht met PHP en ben er zelf redelijk tevreden mee. Alleen ik krijg er een fout niet uit, wat best frusterend werkt.

De opdracht betreft een database waarin het volgende ligt opgeslagen: Spel, Speler, Clannaam en Rating. Het gaat dus over Online Spelen. Nu heb ik een HTML-pagina waarin ik alle spelers wil opvragen aan de hand van hun rating. De gebruiker moet daarvoor eerst 2 variabelen invullen, namelijk de rating van 1 tot 10 en de 'operator', in dit geval =, <, >, <= en >=, om de spelers uit de database op te vragen.

Als de gebruiker dit ingevoerd heeft en op submit heeft gedrukt worden op dezelfde pagina de resultaten getoond. De SQL-statement ziet er dan alsvolgt uit:

SELECT Spel,Speler, Clannaam, Rating
FROM Clangegevens
WHERE Rating $Operator '$Rating'
ORDER BY Rating";

Waar $Operator en $Rating de variabelen zijn die door de gebruiker gespecificeerd zijn. Op zich werkt deze SQL-statement perfect, alle gegevens worden goed getoond. Het enige nadeel dat wanneer deze pagina voor het eerst opgevraagd wordt er een foutmelding komt:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\phpdev\www\clan\db.php on line 115

Voor de database maak ik gebruik van een externe PHP-file. De code die hierin staat heeft niet veel betekenis omdat de fout hier puur in de SQL-statement zit en dan voornamelijk de: "WHERE Rating $Operator '$Rating' ". Als ik van $Operator gewoon een '=' maak is de fout weg. De fout ligt dus dat de variabele $Operator initieel een waarde krijgt die niet herkent wordt in de SQL-statement.

Ik heb al geprobeerd om wanneer de pagina opgestart wordt de variabele $Operator gelijk een waarde toe te kennen, '='. Maar dat werkt ook niet.

Iemand een idee?! Sorry voor het lange verhaal... wist niet hoe dit korter te verwoorden 8)7

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 11-09 10:47
Om in PHP een string aan een sting te koppelen kun je gebruik maken van de '.', ja de punt.

Dan krijg je zoiets:
PHP:
1
2
3
$sql = 'SELECT Spel, Speler, Clannaam, Rating 
           FROM Clangegevens 
           WHERE Rating '. $operator. ' \''. $rating. '\' ORDER BY Rating';

[ Voor 17% gewijzigd door Sybr_E-N op 11-11-2003 22:28 ]


Acties:
  • 0 Henk 'm!

Verwijderd

volgens mij roep je iedere keer bij het laden van de pagina, de php code met de bijbehorende SQL statements aan, wat wil zeggen dat bij het voor het eerst openen van de pagina de variabelen $operator en $rating leeg zijn wat dus zorgt voor een foutmelding in de SQL code, om dit te voorkomen moet je de variabelen aan het begin van de php code een waarde geven als deze leeg zijn.

Acties:
  • 0 Henk 'm!

  • lost95
  • Registratie: Januari 2000
  • Laatst online: 11-09 15:24
Stukje pseudo code:
PHP:
1
((!isset($operator)) ? "=" : "$operator");


Uitleg:
Als variable $operator nog niet bestaat operator een = teken toekennen, anders operator laten staan

Vooral sinaasappels zijn bang voor persvrijheid.