Ga naar inhoud

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

Link naar reactie
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.

 

Link naar reactie
Delen op andere sites

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!

 

Link naar reactie
Delen op andere sites

  • 3 weken later...

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

Link naar reactie
Delen op andere sites

  • 2 maanden later...
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.

Link naar reactie
Delen op andere sites

  • 1 maand later...
Gast
Dit topic is nu gesloten voor nieuwe reacties.
×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.