Is het ook mogelijk een een if isset toe te voegen aan een mysqli select. Wat ik ook probeer ik weet niet zo goed hoe ik dit kan oplossen.


$result_count = mysqli_query($conn,"SELECT COUNT(*) AS total_records 
FROM items 
LEFT JOIN items_filters ON items_filters.item_id = items.item_id WHERE  items.item_toon_id = '1' "
if (isset($_GET['taal'])) {
$sql .= "AND talen.talen_slug = '" . $_GET['taal']. "' ";
				}
$sql .= " GROUP BY items.item_id ORDER BY item ASC";
$result = $conn->query($sql);
Wat gaat er mis?

Verder wil ik je wel wijzen op de gevaarlijke SQL-injection via $_GET!
Het lukt me niet om af te breken na "items.item_toon_id = '1'" en voor de "if(isset)".

Dan kan ik het beter oplossen met:

mysqli_real_escape_string($_GET['taal'])
Kijk eens goed: Je plaatst nu je SQL-query in je mysqli_query() functie.
Daaronder ga je je SQL-query uitbreiden buiten je mysqli_query in een $sql-variable die je opnieuw uitvoert.

Je splitst dus nu één mogelijk SQL query over twee verschillende mysqli_query-functies.

Oplossing: Bouw eerst je query op in $sql.
En voer de vervolgens uit met mysqli_query(...) of $conn->query($sql)
Inderdaad ik zie het en heb dat stuk opgelost. Maar hoe kan ik het probleem met de SQL injection oplossen?

Moet ik het eerst buiten de sql-query omzetten:

$geslacht = mysql_real_escape_string($_GET['geslacht']);

en dan terug plaatsen middels:

'".$geslacht."'
Gewoon integreren in je SQL-query.

$sql .= "AND talen.talen_slug = '".mysqli_real_escape_string($conn,$_GET['taal'])."'";

Reageren