login  Naam:   Wachtwoord: 
Registreer je!
 Forum

2 queries controleren

Offline lau - 26/06/2006 15:33
Avatar van lauHTML interesse Hoe kan ik 2 queries laten controleren?
Ik heb nu het volgende:
  1. $sQueryE = "SELECT id, nederlands_menu, engels_menu FROM ".TBL_GROEP." WHERE id = ".$_GET['id'];
  2. $sQueryF = "SELECT id, afbeelding, nederlands_titel, nederlands_tekst, engels_titel, engels_tekst FROM ".TBL_GROEPDATA." WHERE groep = ".$_GET['id'];
  3. if (!$sResultE = mysql_query($sQueryE) && !$sResultF = mysql_query($sQueryF)) {
  4. include_once 'config/queryerror.php';
  5. } else {
  6. $objE = mysql_fetch_object($sResultE);
  7. $objF = mysql_fetch_object($sResultF);
  8. echo 'asdfasdf';
  9. }


Als 1 van de 2 queries fout is, of als beide queries ergens een fout bevat moet er een queryerror worden weergegeven. Als beide queries goed zijn, mag het door.
Iemand die het ziet waarom het niet werkt?

10 antwoorden

Gesponsorde links
Offline Simon - 26/06/2006 15:36 (laatste wijziging 26/06/2006 15:47)
Avatar van Simon PHP expert
  1. if (!$sResultE == mysql_query($sQueryE) || !$sResultF == mysql_query($sQueryF)) {
  2. include_once 'config/queryerror.php';
  3. }


2 keer een = vergeten?

en || ipv &&
Offline Richard - 26/06/2006 15:37
Avatar van Richard Crew algemeen
  1. if (!($sResultE = mysql_query ($sQueryE)) || !($sResultF = mysql_query ($sQueryF)))
  2. {
  3. include_once 'config/queryerror.php';
  4. }


dit zal wel werken...
Offline Thomas - 26/06/2006 15:46
Avatar van Thomas Moderator Je zou natuurlijk ook kunnen controleren of $_GET['id'] bestaat èn numeriek is... Deze queries zijn gevoelig voor sql-injection?
Offline lau - 26/06/2006 16:21
Avatar van lau HTML interesse @FangorN: stel dat ik dit typ: site.nl/groep?id=2x, dan geeft ie een foutmelding dat id 2x niet bestaat. Is dat niet tegen sql-injection? Tenzij ik iets over het hoofd zie...
Offline Thomas - 26/06/2006 16:47
Avatar van Thomas Moderator Het is niet echt netjes maar goed.

Daarnaast is er een verschil tussen foute query en een query met / zonder resultaten. Als je query slaagt, wil dat niet zeggen dat er resultaten zijn, dus om daarna meteen resultaten op te gaan halen is misschien ook een beetje raar?

Ik zou voor error-handling een aparte functie in het leven roepen, zodat je automatisch wordt doorgestuurd naar een error-pagina mocht er iets mis zijn met de query.
Offline lau - 26/06/2006 17:09 (laatste wijziging 26/06/2006 17:10)
Avatar van lau HTML interesse Neej neej.. uiteraard wil ik het verbeteren.
Ik kan dus beter zo doen:
  1. if (is_numeric($_GET['id']))
  2. $sQueryE = "SELECT id, nederlands_menu, engels_menu FROM ".TBL_GROEP." WHERE id = ".$_GET['id'];
  3. $sQueryF = "SELECT id, afbeelding, nederlands_titel, nederlands_tekst, engels_titel, engels_tekst FROM ".TBL_GROEPDATA." WHERE groep = ".$_GET['id'];
  4. if (!($sResultE = mysql_query($sQueryE)) || !($sResultF = mysql_query($sQueryF))) {
  5. include_once 'config/queryerror.php';
??

Iemand toevallig een error-handling functie? Ik heb al gekeken in Scripts... maar dat is niet helemaal volledig toch?
Offline Gerard - 26/06/2006 18:31
Avatar van Gerard Ouwe rakker Omdat ik er vanuit ga dat de gegevens aanwezig zijn in allebei de tabellen en de id velden van beide tabellen gelijk zijn kan dit ook met één query opgelost worden.

  1. <?php
  2. if (isset($_GET['id']) && ctype_digit($_GET['id'])) {
  3.  
  4. $qGetData = mysql_query("SELECT groep.id, nederlands_menu, engels_menu,
  5. afbeelding, nederlands_titel, nederlands_tekst, engels_titel, engels_tekst
  6. FROM " . TBL_GROEP . " AS groep INNER JOIN " . TBL_GROEPDATA . " AS groepdata
  7. ON groep.id = groepdata.id
  8. WHERE groep.id = " . $_GET['id']);
  9.  
  10. if ($qGetData !== false) {
  11.  
  12. $aResults = mysql_fetch_object($qGetData);
  13.  
  14. } else {
  15.  
  16. require_once 'config/queryerror.php';
  17.  
  18. }
  19.  
  20. }
Offline lau - 26/06/2006 19:43
Avatar van lau HTML interesse @Proximus: klopt jah en het werkt. Maar is de door jou opgestelde code anti sql-injection?
Offline Gerard - 26/06/2006 20:18
Avatar van Gerard Ouwe rakker Ik controleer of het id wat meegegeven wordt in de url balk wel echt een getal is. Er kunnen dus geen strings o.i.d. worden meegegeven.

Wanneer je strings wilt beschermen kan je gebruik maken van addslashes() of van mysql_real_escape_string().
Offline xSc - 27/06/2006 10:42
Avatar van xSc Onbekend Lau, je hebt VWO 6 NT Profiel afgerond, dus ik mag wel van jou verwachten dat je een pientere knaap bent. Gezien jouw ervaring zal je dergelijke zaken gemakkelijk kunnen beoordelen. 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.247s