kgfmb
Goto Top

Datenbankabfrage mittels PHP auf MS SQL Server bringt falsche Daten zurück

Hierbei handelt es sich um ein seltsamens Phänomen

Hallo zusammen,

hab mal wieder etwas, woran ich mir seit einiger Zeit die Zähne ausbeisse.
Vielleicht kann mir einer von euch helfen.

Folgendes:

Schreib an einer PHP-Anwendung, die Daten aus einer Microsoft SQL Datenbank bezieht.
Nun kommt es vor, das ich bei einigen Fällen bei einem Select mit Count(ID) eine Falsche Anzahl zurückbekomme,
und bei anderen Fällen auch nur einen statt meherer Datensätze zurückbekomme.

Hier ein kleiner Ausschnitt.

$sql = "Select * FROM Sperrliste WHERE bDeleted = 0";
$sql =$sql.$sql_zusatz; Anfügen des 'sql_zusatz' zur Filterung
$sql =$sql." order by ";
Sortierung an den SQL anhängen
$sql =$sql.$sSortieren;

$daten = odbc_exec($connect, $sql); // SQL ausführen und Daten von der Datenbank holen

Mein SQL sieht dann wie folgt aus:
echo "SQL: ".$sql;

Select * FROM Sperrliste WHERE bDeleted = 0 AND Nacharbeitsfestlegung like '%nachrüsten%' order by ID

Die aus der Datenbank zurückerhaltenden Daten stelle ich in einer Tabelle dar.
Nur, ich erhalte keinen einzigen Datensatz zurück. Hingegen, wenn ich den SQL im Query Analyzer starte,
bekomme ich über 400 Datensätze, was auch korrekt ist.

Ein ähnliches Phänomen hab ich, wenn ich die Sache nun mit einem Count(ID) versehe.

Select Count(ID) as Anzahl FROM Sperrliste WHERE bDeleted = 0 AND Nacharbeitsfestlegung like '%nachrüsten%'
Dann erhalte ich ebenfalls keinen Datensatz zurück.
Jedoch wieder im Query Analyzer gestarte über 400.

Und nun zur Krönung meiner Versuche.
Suche ich nach einem anderen Wert, z. B. "Tor" erhalte ich genau die Anzahl aus der Datenbank, die auch tatsächlich in der Datenbank sich befinden.

Meine erste Theorie, es handele sich hier um ein Umlaut Problem "ä", "ö", "ü" etc.
kann ich nicht ganz beweisen, da ich Erfolge hatte bei ähnlichen SQL mit Umlauten.

Hat irgendjemand eine Idee??

MfG
KgFmB

Content-Key: 52897

Url: https://administrator.de/contentid/52897

Printed on: April 18, 2024 at 05:04 o'clock

Member: KgFmB
KgFmB Mar 01, 2007 at 08:49:59 (UTC)
Goto Top
So kleiner Nachtrag:

Hab in dem Feld mal nach dem Wort "umrüsten" gesucht.
Er findet nur einen Datensatz, obwohl in der Datenbank 88 Datensätze vorhanden sind.

So nun hab ich mal alle Datensätze per Update ersetzt und zwar durch "umruesten"
und siehe da. Meine Abfrage von PHP bringt mir alle 88 Datensätze zurück.

Gegenprobe:
Wieder umgestellt auf "umrüsten", das Ergebnis ist wieder nur ein Datensatz.

Also muss es doch mit Umlaute und PHP handeln.
Muss ich in der PHP.INI irgendeinen Eintrag ändern, damit ich auch Umlaute verarbeiten kann.

Wie gesagt, seltsam ist nur, das ich in einem anderen Feld ein Wort wie "bürnen" alle Datensätze aus der Datenbank finde.

Gruß
KgFmB
Member: KgFmB
KgFmB Mar 01, 2007 at 10:26:32 (UTC)
Goto Top
Ich glaub, ich habe es:

folgendes hatte ich im PHP Code

<HTML>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Durch suche in alten ASP.Seiten von Kollegen stiess ich auf folgendes:

<meta http-equiv="Content-Type" content="0" />

Na gut dacht ich mir so, probieren über studieren...

Und siehe da, es funktioniert.
Ich bekomm exakt die Datensätze aus der Datenbank, nach denen ich suche.

Nun stellt sich mir die Frage.
Ist es ein Glückstreffer, oder hab ich durch Zufall die Lösung gefunden?

Vielleicht kann mir ja jemand das bestättigen, das dies die Lösung ist.

Gruß

KgFmB
Member: Dani
Dani Mar 01, 2007 at 23:14:36 (UTC)
Goto Top
G' Abend,
das kannst du doch ganz einfach testen. Such nach einem Wort mit Umlauten. Zuvor entferne aus dem PHP-Dokument die eingefügt Zeile. Such einmal über PHP und danach mit deinem Tool. Dann die Zeile wieder einfügen und wieder mit PHP und dem Tool checken. Somit merkst du schnell, ob's stimmt.


Grüße
Dani
Member: Dani
Dani Apr 28, 2007 at 15:13:22 (UTC)
Goto Top
Hi,
wie ist nun der Status deines Problems??


Gruß
Dani