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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 52897
Url: https://administrator.de/forum/datenbankabfrage-mittels-php-auf-ms-sql-server-bringt-falsche-daten-zurueck-52897.html
Ausgedruckt am: 23.12.2024 um 03:12 Uhr
4 Kommentare
Neuester Kommentar
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
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