Ga naar inhoud

Welkom op PC Helpforum!
PC Helpforum helpt GRATIS computergebruikers sinds 2006. Ons team geeft via het forum professioneel antwoord op uw vragen en probeert uw pc problemen zo snel mogelijk op te lossen. Word lid vandaag, plaats je vraag online en het PC Helpforum-team helpt u graag verder!

Vriendelijk verzoek: whitelist www.pc-helpforum.be in je adblocker.

Beste bezoeker. Je ziet deze tekst omdat een adblocker, plugin of andere software onze advertenties blokkeert. PC Helpforum helpt jaarlijks gratis duizenden mensen met computerproblemen. Deze website en server kunnen we enkel onderhouden dankzij de inkomsten uit advertenties. Vandaar een vriendelijk verzoek: whitelist onze site zodat we jullie gratis verder kunnen helpen. Klik hier om te lezen waarom en hoe je kunt whitelisten.



trendyfrendy

Opbouw $qry mbv $_POST in deelvariabelen $qryA-$qryQ

    Aanbevolen berichten

    Bedoeling is de mysql-query $qry op te bouwen vanaf $selected en $qryA tot $qryQ met de input-values van alle $_POST uit 1 form.

    Maar er komt onderstaande foutmelding ipv dat de query uitgevoerd wordt. Nochtans klopt het formaat vd query, niet het type.

    $selected="SELECT ";
    if(!empty($_POST['kies'])){ // checkboxes to select 1 or more database formfields
        $t=0; // count selected items first left column
        foreach($_POST['kies'] as $field){
            $selected.=$field.","; // $selected gets build here
        }
        $selected.="íd"; // $selected ends by adding the id-field
    }

    $qryA="";$qryB="";$qryC=""$qryD="";$qryE="";$qryF="";$qryG="";$qryH="";$qryI="";$qryJ="";$qryK="";$qryL="";$qryM="";$qryN="";$qryO="";$qryP="";$qryQ="";
    $qryA=" WHERE ".$_POST['waarbijA'];     // database fielditem choosen by radiobutton
    $qryB=$_POST['operatorB'];            // < = > LIKE by radiobutton
    $qryC="'".$_POST['inhoudC']."'";        // input by texttype
    $qryD=" ".$_POST['enofD']." ";        // AND - OR  by radiobutton
    $qryE=$_POST['waarbijE'];            // database fielditem by radiobutton
    $qryF=$_POST['operatorF'];            // < = > LIKE by radiobutton
    $qryG="'".$_POST['inhoudG']."'";        // input by texttype
    $qryP=" ORDER BY ".$_POST['sorteerOp'];// database fielditem by radiobutton
    $qryQ=" ".$_POST['volgorde'];        // ASC - DESC by radiobutton
    $qry=$selected.$qryA.$qryB.$qryC.$qryD.$qryE.$qryF.$qryG.$qryH.$qryI.$qryJ.$qryK.$qryL.$qryM.$qryN.$qryO.$qryP.$qryQ;

    $result=mysqli_query($_SESSION['con'],$qry);
    while($row=mysqli_fetch_assoc($result)){    //line 199
    ...........
    }
    geeft als resultaat :
    Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in I:\makeListQry.php on line 199


    Nochtans is de echo van de opgebouwde query correct (zie groene cirkel bovenaan bijgevoegde schermafdruk) :
    SELECT naam,posts,lidnr,lid_tem,íd WHERE naam='k' AND afd='4' OR afd='8'
    Please : Wie helpt om het type (parameter 1 ipv bool) in orde te krijgen? Any suggestions and solutions?!

     

     

     

     

     

     

    qry.jpg

    qryFrm.jpg

    Deel dit bericht


    Link naar bericht
    Delen op andere sites

    De code ziet er gewoon 'ok' uit, maar ik vermoed dat je connectie niet goed is. Ofwel je $_SESSION['con']  is niet goed. 

    Je kunt zien wat er fout is, door mysqli_error($connection) te gebruiken (http://www.w3schools.com/php/func_mysqli_error.asp).

    Nadat ik het nog eens heb gelezen, mis je een FROM statement. Je selecteert geen tabel om je informatie uit te halen.

     

    Ik wil wel erbij zeggen dat je code super onveilig is. Iemand kan nu d.m.v. SQL Injection andere waarden opgeven en zo de database hacken, omdat je de $_POST waarden niet escaped. Plus je mist ook een puntcomma tussen $qryC=""$qryD="".

     

    Als ik jou was zou in database gerelateerde dingen overlaten aan een framework, zodat je als ontwikkelaar geen zorgen hoeft te maken over o.a. SQL Injection. 

    Goede frameworks voor database gerelateerde zaken zijn: Medoo, Laravel of Doctrine. 

    De makkelijkste zal Medoo zijn, de meest uitgebreide is toch wel Doctrine, maar als je nog nooit met iets van frameworks heb gewerkt moet je daar nog niet mee beginnen. 

    Als je zelf nog wat verder zoekt vindt je er vast nog wel een paar die goed zijn.

     

    Deel dit bericht


    Link naar bericht
    Delen op andere sites
  • Topicstarter
  •    0

    Hoi hoi, Dekoning ;o)

    Dank u voor uw snelle adequate reply.

    Aanvankelijk stond FROM 'leden' er ook bij maar door de variabelen aan te passen door allerlei foutmeldingen is die inderdaad verdwenen : fout 1 (Een mens ziet uiteindelijk zijn eigen eenvoudige fout niet meer ook al test je nog 100x)

    Verder moet de connectie inderdaad ook es nagekeken worden, of ze er wel is bv, pingggg : fout 2.

    Wat bertreft sqlinjection, dat is hier 'denk ik' niet belangrijk; het betreft hier een offline applicatie in flightmodus voor het beheer van leden. Wat denk je?

    Morgen zal ik jouw verbeteringstips es doorvoeren, hopelijk werkt het dan.

    Nogmaals haRtelijk bedankt!

     

    Deel dit bericht


    Link naar bericht
    Delen op andere sites

  • Topicstarter
  •    0

    Beste,

     

    het lukt echt niet om de query uit te voeren,

    er zit een syntaxfout in de opbouw, zie bijgevoegde img,

    ik vermoed ergens een foute keuze van ' of " of {}

     

    Hierbij nog es de verkorte code:

        $selected='SELECT ';
        if(!empty($_POST['kies'])){
            foreach($_POST['kies'] as $field){
                $selected.=$field.',';
                $tblhd[$t]=$field;
            }
            $selected.='íd FROM leden';
        }
        $qryA='';$qryB='';$qryC='';$qryD='';$qryE='';$qryF='';$qryG='';
        $qryA=' WHERE '.$_POST['waarbijA'];
        $qryB=$_POST['operatorB'];
        $qryC='\''.$_POST['inhoudC'].'\'';
        $qryD=' '.$_POST['enofD'].' ';
        $qryE=$_POST['waarbijE'];
        $qryF=$_POST['operatorF'];
        $qryG='\''.$_POST['inhoudG'].'\'';
        //(...etc...$qryH...$qryO;)
        $qryP='';$qryQ='';
        $qryP=' ORDER BY '.$_POST['sorteerOp'];
        $qry='"'.$selected.$qryA.$qryB.$qryC.$qryD.$qryE.$qryF.$qryG.$qryH.$qryI.$qryJ.$qryK.$qryL.$qryM.$qryN.$qryO.$qryP.$qryQ.';"';
        $qry="{$qry}";
     

    Wie kan de code aanpassen dat ie eindelijk es werkt? 

    Heel veel dank bij voorbaat.

     

    sqlErr.jpg

    Deel dit bericht


    Link naar bericht
    Delen op andere sites

    Die regel moet je aanpassen naar dit:

     

    $qry= $selected.$qryA.$qryB.$qryC.$qryD.$qryE.$qryF.$qryG.$qryH.$qryI.$qryJ.$qryK.$qryL.$qryM.$qryN.$qryO.$qryP.$qryQ;

     

    Dan komt er een query uit zonder quotes of puntcommas, en die moet werken. 

    Deel dit bericht


    Link naar bericht
    Delen op andere sites

  • Topicstarter
  •    0

    Beste behulpzame medewerker,

    dank u voor de nieuwe tip, want na veel probeersels lukte het tot gisteren nog steeds niet.

    Hopelijk werkt jouw voorgestelde oplossing morgenavond wel;

    je leest het tegen donderdag.

    Vriendelijk dankbare groeten.

    Deel dit bericht


    Link naar bericht
    Delen op andere sites
  • Topicstarter
  •    0
    Op 10-10-2016 om 23:07, trendyfrendy zei:

    Beste behulpzame medewerker,

    dank u voor de nieuwe tip, want na veel probeersels lukte het tot gisteren nog steeds niet.

    Hopelijk werkt jouw voorgestelde oplossing morgenavond wel;

    je leest het tegen donderdag.

    Vriendelijk dankbare groeten.

     

    Beste medewerker,

    De sql syntaxfout is nu dankzij jou inderdaad opgelost, maar de letter 'i' van id bleek zelfs ook een foutief teken bij id FROM leden te zijn, zo'n zwart ruitje met een teken in weet je wel. Ik heb deze txt nochtans eerst naar kladblok gekopieerd en daaruit pas geplakt?!

    Maar nu ben ik terug op goede weg,

    dank voor uw hulp.

    Megafijn weekend.

    Deel dit bericht


    Link naar bericht
    Delen op andere sites

    Gast
    Dit topic is nu gesloten voor nieuwe reacties.

    Logo

    OVER ONS

    PC Helpforum helpt GRATIS computergebruikers sinds juli 2006. Ons team geeft via het forum professioneel antwoord op uw vragen en probeert uw pc problemen zo snel mogelijk op te lossen. Word lid vandaag, plaats je vraag online en het PC Helpforum-team helpt u graag verder!

    ×