Michaela: Nach Datum und Uhrzeit sortieren / gruppieren

Beitrag lesen

Hallo,

Wenn man zwei Mengen mit UNION zusammenführen möchte, müssen diese beiden Mengen in ihrer Struktur übereinstimmen. Es geht nicht, eine Query mit 6 Ergebnisfeldern und eine mit 5 zu vereinigen. Gegebenenfalls muss ein Dummy selektiert werden. Das kann auch ein Literal, wie Leerstring oder NULL sein.

ich habe mein Select etwas erweitert dass auf beiden Seite die gleiche Menge ist

function tmp_TestAusgabe($mysqli, $Code, $datum) {
	$stmt = $mysqli->prepare("(SELECT id, code, userID, status, datum, uhrzeit 
					FROM tmp01
					WHERE userID =?
					AND datum =?) 

				UNION
								
				(SELECT erinnerung_id, erinnerung_userCode, erinnerung_nr, erinnerung_status, erinnerung_update_d, erinnerung_update_u 
				FROM tmp02
				WHERE erinnerung_userCode =?
				AND erinnerung_update_d =?) ");
		
	$stmt->bind_param("ssss", $Code, $datum, $Code, $datum);
	$stmt->execute();
	$stmt->bind_result($id, $code, $userID, $status, $datum, $uhrzeit, $erinnerung_id, $erinnerung_userCode, $erinnerung_nr, $erinnerung_status, $erinnerung_update_d, $erinnerung_update_u );
	$stmt->store_result();
	 	
	if($stmt->num_rows() >  0) {     
		while ($stmt->fetch()){
			$tmp_Ausgabe[] = array( 
				'id' 		=> $id, 
				'code' 		=> $code, 
				'userID' 	=> $userID,
				'status' 	=> $status, 
				'datum' 	=> $datum, 
				'uhrzeit'	=> $uhrzeit,
				'erinnerung_id' 	=> $erinnerung_id, 
				'erinnerung_userCode' 	=> $erinnerung_userCode,
				'erinnerung_Kdnr' 	=> $erinnerung_nr, 
				'erinnerung_status'	=> $erinnerung_status,
				'erinnerung_update_d' 	=> $erinnerung_update_d, 
				'erinnerung_update_u'	=> $erinnerung_update_u
			);
		}
		return $tmp_Ausgabe;
	}
}

Nun bekomme ich zwar viele Fehler ich bekomme aber 72 Datensätze angezeigt. Ein Fehler lautet:

Warning: mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement in

der zweite Fehler der wiederholt sich in jeder Zeile lautet:
Notice: Undefined offset: 2

Ich denke dieses liegt nun an

$tmp_TestAusgabe = tmp_TestAusgabe($mysqli, $UserCode, $datum);
if($tmp_Ausgabe > 0) {
	foreach($tmp_Ausgabeas $array){
		echo htmlspecialchars($array['uhrzeit']);
	}
}
	else { echo "<p>Abfrage lautet 0</p>"; }

Da ich jetzt mehrere Tabellen habe muss dieser Bereich ebenfalls umgebaut werden, richtig?