Ich habe hier eine Funktion mit einer langen Abfrage:
[PHP]function hole_waren($db)
{
$abfrage = $db->query(‚SELECT produkte.artikel_name, produkte.artikel_detail, preise.artikel_auflage, preise.artikel_preis FROM produkte JOIN preise ON produkte.artikel_gruppe = preise.artikel_gruppe WHERE preise.artikel_gruppe = „1“‘);
$daten = $abfrage->fetchAll();
$abfrage = 0;
return $daten;
}[/PHP]
die ich aus Gründen der Übersichtlichkeit gerne umbrechen möchte. Wenn ich allerdings den Zeilenumbruch vor den Schlüsselwörtern vornehme, also so:
[PHP]function hole_waren($db)
{
$abfrage = $db->query(‚SELECT produkte.artikel_name, produkte.artikel_detail,‘ .
‚preise.artikel_auflage, preise.artikel_preis‘ .
‚FROM produkte JOIN preise ON‘ .
‚produkte.artikel_gruppe = preise.artikel_gruppe‘ .
‚WHERE preise.artikel_gruppe = „1“‘);
$daten = $abfrage->fetchAll();
$abfrage = 0;
return $daten;
}[/PHP]
Dann erhalte ich einen PDO Fehler: Uncaught exception ‚PDOException‘ with message 'SQLSTATE[42000]: Syntax error or access violation …
Ich sehe nicht, wo hier ein Syntax Error vorliegen soll, oder sind bei SQL-Abfragen Zeilenumbrüche vor Schlüsselwörtern nicht gestattet?
Mach mal ein echo auf dein SQL und dann siehst, dass da mindestens ein paar Leerzeichen oder sonstige Whitepaces fehlen. Ich denke du hast das \n am Zeilenende vergessen. Davon abgesehen ist es schon kürzer, das SQL direkt in den query zu schreiben. Aus Debug-Gründen würde ich es aber immer erst nach $sql schreiben und diese Variable in der Query verwenden.
In SQL-Anweisungen sind Zeilenumbrüche ebenfalls kein Problem, sie werden wie beispielsweise auch Leerzeichen und Tabulatoren einfach als Whitespace gewertet.