Hallo Rolf,
ist schon okay, dass Du hier fragst. Man sagt uns nach, gelegentlich schon 2-3 Worte PHP gesprochen zu haben.
Vielen Dank, dass ich hier aufgenommen wurde.
Meine Hinweise:
Der monströse SELECT. Ich habe das editiert und HEREDOC Syntax draus gemacht. Deutlich lesbarer, gelle?
Ich habe darüber nie nachgedacht. Alles was ich über SQL und PHP weiß, habe ich mir selbst beigebracht. Aber ja, dass ist wirklich besser.
Wenn Code nicht tut, was man erwartet, muss man debuggen. Ich habe das Problem jetzt durch Anstarren gefunden (auch nicht im ersten Anlauf), aber wenn ich PHP schreibe, habe ich immer eine Log-Funktion, die Protokolleinträge in einem Array sammelt und am Seitenende raushaut. Wenn der Code produktiv läuft, mache ich aus der Log-Funktion einen Dummy, der nichts tut. Alternativ kannst Du Log-Infos auch mit error_log ins PHP Log schreiben, meine Erfahrung ist nur, dass das relativ langsam ist.
Ich habe eine Log-Datei, aber da erscheint keine Fehlermeldung!
Damit kannst Du dann Variablenwerte protokollieren und schauen, ob die erwarteten Werte herauskommen. Wenn nicht, kannst Du die Problemstelle eingrenzen.
Was habe ich gefunden:
Du versuchst, eine kommaseparierte Liste zu erkennen und daraus mehrere LIKEs zu machen. Kann man machen, ist aber mühsam. Und vor allem geht das nicht, wenn Du SQL Parameter verwendest. Innerhalb eines Parameterwertes darf keine SQL Syntax vorkommen - na gut, darf schon, wird aber als zu suchender Wert und nicht als SQL interpretiert. Und weil die Fahrzeugnummern in deiner DB nicht das Wort LIKE enthalten, findest Du nichts. Hinzu kommt die exnummern-tabelle, da heißt die Spalte nicht fahrzeugnummer sondern exnummer, deine LIKE-Verkettung sucht aber fahrzeugnummer. Das gibt einen SQL Fehler, er wird die Ausführung gar nicht erst versuchen.
Drittens hast Du hinter den Kommata in der Nummernliste Leerstellen. Die schmeißt Du beim Erzeugen der Like-Liste nicht weg, d.h. du würdest explizit nach diesem Space suchen. Was mutmaßlich schiefgeht. Aber wie gesagt: so weit kommst Du gar nicht.
Ich habe mal ein Bild gemacht. Er zeigt als Fehlercode: 0000 an! Die Leerzeichen habe ich korrigiert.
Wenn die Fahrzeugnummernfragmente, die Du suchst, ausschließlich aus Ziffern und Leerstellen bestehen, kannst Du eventuell mit REGEXP arbeiten. Das hängt von deiner Datenbank ab. Welche hast Du? Und zwar ganz genau?
Ich habe MariaDB 10.11.13
Die Fahrzeugnummern haben sich, geschichtlich bedingt, mehrmals geändert. Ich betreibe mit weiteren Leuten eine Datenbank über Revisionsdaten der Eisenbahn.
Das mit der Ex-Nummer ist natürlich richtig, das müsste ich dann in der Datenbank ändern. Wäre aber kein Problem, aus ex-nummer eine fahrzeugnummer zu machen.
Viele Grüße Michael