Seite 1 von 1

mysqli: Query darf keine Zeilenumbrüche enthalten??

Verfasst: 10.09.2007 13:30
von Gast210225
Hallo,

Hier erstmal der Code:

Code: Alles auswählen

$sql = 'SELECT *
	FROM table';

$result = $db->query($sql);
$db->free_result($result);
Wenn ich das ausführe bekomme ich folgende meldung:

Code: Alles auswählen

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\n FROM table' at line 1 [ 1064 ]
Wenn ich jedoch

Code: Alles auswählen

$sql = 'SELECT * FROM table';
schreibe geht es...

Hat da jemand einen Tipp für mich?

Verfasst: 10.09.2007 14:00
von Dr.Death
Hi,

vielleicht liegt es an Deinem Editor....

... benutze mal testweise den Notepad++

Verfasst: 10.09.2007 14:03
von gn#36
Hauptsache du hast nicht das hier ausgeführt:

Code: Alles auswählen

$sql = 'SELECT * \n FROM table';

$result = $db->query($sql);
$db->free_result($result);
das \n wird nämlich nur umgewandelt in einen Zeilenumbruch, wenn es in doppelten Anführungszeichen steht.

Verfasst: 10.09.2007 14:08
von Gast210225
Hallo,

ich hab es mit kate und gedit versucht.... Beides geht nicht (Linux)
Hat sonst noch jemand eine Idee woran das liegen könnte?

Verfasst: 10.09.2007 14:17
von gn#36
Hm. Fällt mir jetzt so nicht ein. Allerdings könntest du im Notfall vor dem Ausführen des Querys alle Zeilenumbrüche entfernen:

Code: Alles auswählen

str_replace("\n",'',$query);
Wenn du das in die Wrapper-Klasse mit einbaust dann dürfte es noch nicht einmal groß stören, seltsam ist das Verhalten aber schon, denn eigentlich sollten Zeilenumbrüche nicht stören.

Verfasst: 10.09.2007 17:18
von Gast210225
Hallo,
ich hab nun den fehler:

Code: Alles auswählen

$sql = mysqli_real_escape_string($this->link, $sql);
anschreinend kann ich die funktion nicht für das ganze query benutzen, sondern immer nur für einzelne strings...

Verfasst: 10.09.2007 19:49
von gn#36
Die Funktion ist auch nicht dafür gedacht das komplette Query zu bearbeiten sondern nur dazu da, in Felder einzutragende Strings so vorzubereiten, dass diese das Query nicht beeinflussen, also z.b. alle ' maskiert werden. Wenn du das auf den ganzen Query anwendest funktioniert der natürlich meist nicht mehr.