User Tools

Site Tools


php:kompost:variablewheresimple

[PHP] [MySQL] einfache variable Where-Zusammenstellung

Diese Seite befindet sich im Kompost. Wenn ich mal Zeit habe, wird sie entweder überarbeitet oder entfernt.
Mindestens auf mysqli sollte ich sie umschrieben…

Immer wieder steht man vor dem Problem, ein SQL-Query zusammenzustellen, bei dem im Vorfeld nicht bekannt ist wie viele Kriterien zum Filtern verwendet werden.

<?php
	//Testdaten erstellen. $numArg3 darf nicht im Where-Teil des SQLs erscheinen
	$numArg1 = 123;
	$numArg3 = NULL;
	$stringArg3 = 'ab"c';
 
	//Die Connection baue ich hier nur auf, um den mysql_real_escape_string() zu
	//ermöglichen. Diese sollte gerade bei WHERE-Feldern unbedingt genutzt werden
	$conn = mysql_connect('localhost', 'root', '') or die(mysql_error);
 
	//Ein Array initialisieren. Dies ist notwendig da später mit einem implode() auf diese Variable getestet wird
	$args = array();
 
	//Die einzelnen Variablen prüfen und dem Argumententopf $args mit der genauen 
	//SQL-Syntax hinzufügen
	if(isset($numArg1)) $args[] = 'arg1 = '.mysql_real_escape_string($numArg1);
	if(isset($numArg2)) $args[] = 'arg2 = '.mysql_real_escape_string($numArg2);
	if(isset($stringArg3)) $args[] = "arg3 = '".mysql_real_escape_string($stringArg3)."'";
 
	//Den Where-String aus dem Argumententopf erstellen
	$where = implode(' AND ', $args);
 
	//Das Sql ohne Where erstellen
	$sql = "SELECT * FROM table";
 
	//Falls wir einen Where-String haben, diesen mit dem Schlüsselwort 'WHERE? an den 
	//Sql-String anhängen
	if(isset($where)) $sql = $sql." WHERE ".$where;
 
	//TODO Auswertend des SQLs
	//Für diises Testscript reicht jedoch die Ausgabe unseres Sqls
	echo $sql;
 
	//Datenbankconnection wieder schliessen
	mysql_close($conn);
?>
php/kompost/variablewheresimple.txt · Last modified: 31.12.2013 11:04:10 (external edit)