Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Guten Tag zusammen,

ich habe ein sehr merkwürdiges Phänomen wo ich gerade nicht weiter komme.

Ich habe folgende SQL-Abfrage:

select *  from Bedarfsmeldung
				inner join View_Mitarbeiter on Bedarfsmeldung.Personalnummer = View_Mitarbeiter.Personalnummer 
				left join Kostenstelle_Mitarbeiter on Kostenstelle_Mitarbeiter.Personalnummer = View_Mitarbeiter.Personalnummer 
				where 
				Bedarfsmeldung.Personalnummer = 999999
				or Kostenstelle_Mitarbeiter.Personalnummer = 999999

Diese Abfrage funktioniert direkt in der MS SQL Management Console einwandfrei und liefert die erwarteten Ergebnisse.

Führe ich den folgenden PHP-Teil aus, wird mir allerdings ein leeres Array zurückgegeben. Ich habe das SQL-Statement zum Testen ein wenig umgebaut, daher können die Parameter im Array (fertig, inBearbeitung und personalnummer ignoriert werden). Wenn das or Kostenstelle_Mitarbeiter.Personalnummer = 999999 entferne, bekomme ich ein Ergebnis, jedoch nicht das, welches ich benötige.

	public function getPersoenlicheBestellungen($fertig = '0', $in_bearbeitung= '0', $sortierart="desc", $sortierspalte='id'){
		$personalnummer = $this->ldap->getPersonalnummer();
		$res = ($this->db->select("select *  from Bedarfsmeldung
				inner join View_Mitarbeiter on Bedarfsmeldung.Personalnummer = View_Mitarbeiter.Personalnummer 
				left join Kostenstelle_Mitarbeiter on Kostenstelle_Mitarbeiter.Personalnummer = View_Mitarbeiter.Personalnummer 
				where 
				Bedarfsmeldung.Personalnummer = 999999
				or Kostenstelle_Mitarbeiter.Personalnummer = 999999", 
				array(':fertig'=>$fertig, ':in_bearbeitung'=>$in_bearbeitung, ':personalnummer' =>$personalnummer)
		));		
		return $res;
	}

Hier nochmal die Funktion select....

	public function select($sql, $array = array(),$fetch='fetchAll', $fetchMode = PDO::FETCH_ASSOC){
		$stmt = $this->prepare($sql);
		if($array!=""){
			foreach ($array as $key =>$value){
				$stmt ->bindValue("$key", $value);
			}
		}
		$stmt ->execute();
//  	print_r($stmt);
		$res =  $stmt->$fetch($fetchMode);
//		print_r($res);	
		return $res;
//		print_r($stmt);

	}

Vielleicht habt ihr ja eine Idee, woran es liegen könnte.

Geschrieben
vor 9 Minuten schrieb Gottlike:

OR ist die schwächste Verbindung und wird zuletzt ausgewertet.
Setze dein WHERE Statement in Klammern und probier es nochmal.

Ich habe es versucht aber bringt nichts. Aber die Abfrage an sich Funktioniert ja schon, halt direkt auf der DB, nur hier wird mir ein leeres Array zurückgegeben.

Geschrieben

Hast du auf dem Server alle Fehlermeldungen aktiviert? Vielleicht tritt dort ein Fehler auf und du siehst es nur nicht.


Aber noch ein Hinweis: Vermeide SELECT *, denn das gibt zu viele Informationen zurück und kann auch zu Problemen führen, wenn man weitere Tabellen gejoint hat, die wiederum Spalten besitzen, die den selben Namen haben. Gib immer explizit an, welche Spalten du haben willst. In diesem Fall hast du sogar zwei Tabellen gejoint, also gibt dir die Abfrage die Spalten von drei Tabellen zurück. Je nach Anzahl der Recordsets kann es durchaus zu Performanceproblemen kommen.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...