Optionale Funktionsparameter und MySQLi Abfrage

Trash

Erfahrenes Mitglied
Hallo,
ich habe eine Funktion, die 3 Parameter (davon einer optional) beinhaltet. Je nachdem ob der Parameter mitgegeben wird, soll die SQL Abfrage anders ausgeführt werden. In der DB steht entweder ein Wert oder NULL.

Das kann man aber bestimmt intelligenter lösen, als in diesem Fall, oder? Ein Problem sehe ich beim "bind_param"...Danke!

PHP:
	public static function getResultsByTeam($team, $version, $group = NULL) {
	
		$points = 0;
		$goals_for = 0;
		$goals_against = 0;
		$wins = 0;
		$losses = 0;
		$draws = 0;
		$yellow = 0;
		$red = 0;
		
		$db = @new mysqli(_SERVERROOT, _DBUSER, _DBPASS, _DBNAME);
		
		if (mysqli_connect_errno() == 0) {
		
		//HEIM-ERGEBNISSE
		
		if ($group != NULL) {
			$sql = "SELECT `id` FROM `"._PES_SPIELPLAN."` WHERE `heim_id` = ? AND `version_id` = ? AND `group` = ? ORDER by `spiel_nr` ASC;";
		} else {
			$sql = "SELECT `id` FROM `"._PES_SPIELPLAN."` WHERE `heim_id` = ? AND `version_id` = ? ORDER by `spiel_nr` ASC;";	
		}
		
			$ergebnis = $db->prepare($sql);
			
			if (!$ergebnis) {
				throw new Exception('Prepare kann nicht ausgeführt werden. Funktion: '.__FUNCTION__.' Klasse: '.__CLASS__.'. Error '.$db->error);
			}//if (!$ergebnis)
			
			if ($group != NULL) {
				$ergebnis->bind_param('iis', $team->id, $version->id, $group);
			} else {
				$ergebnis->bind_param('ii', $team->id, $version->id);
			}...
 
Was meinst du denn mit intelligenter? Kürzer?
PHP:
$sql = "SELECT `id` FROM `"._PES_SPIELPLAN."` WHERE `heim_id` = ? AND `version_id` = ? ".(!is_null($group)? 'AND `group` = ?' : '') ." ORDER by `spiel_nr` ASC;";

Bei NULL entweder mit is_null arbeiten, oder mit !== bzw ===.
 
Ich dachte, dass man es ggf. direkt in dem SQL hinterlegen kann, ohne eine IF Abfrage benutzen zu müssen. Aber deine Variante benötigt keine zusätzliche IF Abfrage, richtig?
 
Die ist mittels dem tenären Operator schon eingebaut. Was mit MySQL da noch möglich ist, weiß ich nicht, vor allem nicht mit vorbereiteten Statements.
 
Zurück