SQL-Syntax unter Windows und Linux
SQL-Syntax unter Windows und Linux
am 28.01.2007 18:20:37 von Hermann Splitthoff
Hallo liebe Leute,
derzeit lerne ich ein bisschen mit MySL umzugehen. Dabei greife ich auf
Bespiele aus einem Buch zurück. Nun ist es so, dass ich normalerweise unter
Windows arbeite und da klappt auch alles, was ich so anstelle und aus dem
Buch abschreibe. Das gleiche klappt unter Linux - ich bin gerade mit dem
Umstieg von Windows auf Linux beschäftigt - nicht.
Hier mal die zugrundeliegende Syntax in einem PHP-File:
Beispieldatenbank Buch
Suchergebnis
$link=mysql_connect("localhost","",""); mysql_select_db("test");
$anfrage="SELECT * FROM buch WHERE $Attribut LIKE '$Suchanfrage' ORDER BY
Autor;";
$ergebnis=mysql_query($anfrage) or die ("Fehlermeldung=".mysql_error());
echo mysql_num_rows($ergebnis)." Datensätze ";
echo "
";
for ($i=0;$i
"".mysql_field_name($ergebnis,$i)." | "; };
while ($zeile=mysql_fetch_row($ergebnis))
{ echo "";
for ($i=0;$i
"".$zeile[$i]." | ";};
echo "
"; };
echo "
";
mysql_free_result($ergebnis); mysql_close($link);
?>
Die Syntax der SQL-Anweisung in Zeile 8 wird unter Windows problemlos
akzeptiert (MySQL 3.x). Unter Linux (MySQL 5.x) erscheint folgende
Fehlermeldung:
You have an error in your SQL-Syntax; check .... right syntax to use near
'LIKE" ORDER BY Autor' at line 1
Ich gehe mal davon aus, dass das mit mit Abfrage-Formular (Abfrage.html)
zusammenhängt. Da werden über Textboxen und Dropdownlisten Abfrageparameter
abgefragt und in die "Suchanfrage" übergeben. Nach Bestätigung durch der
Parameter wird die Datei "Abfrage.php" aufgerufen. Statt eines Ergebnisses -
wie unter Windows - erhalte ich dann obige Fehlermeldung.
Hat jemand einen Tipp für mich? Vielen Dank im voraus.
Schönen Gruß
Hermann Splitthoff
Re: SQL-Syntax unter Windows und Linux
am 28.01.2007 18:32:42 von Andreas Kretschmer
Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)
Re: SQL-Syntax unter Windows und Linux
am 28.01.2007 18:47:25 von Kai Ruhnau
Kommentiertes Fullquote + Fup2 de.comp.lang.php.datenbanken
Hermann Splitthoff wrote:
> Hallo liebe Leute,
>
> derzeit lerne ich ein bisschen mit MySL umzugehen. Dabei greife ich auf
> Bespiele aus einem Buch zurück. Nun ist es so, dass ich normalerweise unter
> Windows arbeite und da klappt auch alles, was ich so anstelle und aus dem
> Buch abschreibe. Das gleiche klappt unter Linux - ich bin gerade mit dem
> Umstieg von Windows auf Linux beschäftigt - nicht.
Du hast ein PHP-Problem, kein MySQL-Problem. Wenn das folgende
tatsächlich in deinem Buch steht, wirf es weg - weit weg.
Alternativ kannst du damit einen wackelnden Tisch unterstützen oder ein
Kaminfeuer entfachen.
> Hier mal die zugrundeliegende Syntax in einem PHP-File:
>
>
>
Beispieldatenbank Buch
>
> Suchergebnis
Vor H3 kommt noch H1 und H2. Nur weil die Formatierung "passt" wird es
nicht mit einem mal semantisch sinnvoll.
>
>
> $link=mysql_connect("localhost","",""); mysql_select_db("test");
Tatsächlich ohne Benutzer und Passwort? Das wären Defaulteinstellungen
einer frischen Installation. Ändere das.
> $anfrage="SELECT * FROM buch WHERE $Attribut LIKE '$Suchanfrage' ORDER BY
> Autor;";
16.14. Warum soll ich nicht SELECT * schreiben?
http://php-faq.de/q/q-sql-select.html
11.20. Warum funktionieren meine Formulare nicht?
http://php-faq.de/q/q-formular-register-globals.html
16.18. Wie kann ich bösartigen Code in SQL-Abfragen unterbinden?
http://www.php-faq.de/q/q-sql-injection.html
> $ergebnis=mysql_query($anfrage) or die ("Fehlermeldung=".mysql_error());
> echo mysql_num_rows($ergebnis)." Datensätze ";
> echo "
";
> for ($i=0;$i
> "".mysql_field_name($ergebnis,$i)." | "; };
> while ($zeile=mysql_fetch_row($ergebnis))
> { echo "";
> for ($i=0;$i
> "".$zeile[$i]." | ";};
> echo "
"; };
> echo "
";
Quelltext ist nicht für Maschinen, sondern für Menschen. Die mögen es
üblicherweise, wenn etwas lesbar formatiert ist. Nebenbei hast du
diverse ; zuviel in diesem Schnippsel und quotest mit nichts die Ausgabe
aus der Datenbank. Ist das Buch schon weg?
> mysql_free_result($ergebnis); mysql_close($link);
> ?>
>
>
>
>
>
>
> Die Syntax der SQL-Anweisung in Zeile 8 wird unter Windows problemlos
Welche ist Zeile 8? Sollen wir etwa selber zählen?
> akzeptiert (MySQL 3.x).
Wo hast du die denn ausgegraben? Ändere das dringend!
> Unter Linux (MySQL 5.x) erscheint folgende Fehlermeldung:
>
> You have an error in your SQL-Syntax; check .... right syntax to use near
> 'LIKE" ORDER BY Autor' at line 1
Hast du das per Copy + Paste hier reingeholt? Oder hast du das
abgeschrieben? Da in "Zeile 8" innerhalb der SQL-Anweisung kein "
vorkommt, gehe ich mal von letzterem aus. Nicht gut.
> Ich gehe mal davon aus, dass das mit mit Abfrage-Formular (Abfrage.html)
> zusammenhängt. Da werden über Textboxen und Dropdownlisten Abfrageparameter
> abgefragt und in die "Suchanfrage" übergeben. Nach Bestätigung durch der
> Parameter wird die Datei "Abfrage.php" aufgerufen. Statt eines Ergebnisses -
> wie unter Windows - erhalte ich dann obige Fehlermeldung.
Die Fehlermeldung ist nur ein Symptom, die Probleme sind weitaus größer.
> Hat jemand einen Tipp für mich? Vielen Dank im voraus.
Ich hab' mal angefangen.
HTH und Grüße
Kai
--
This signature is left as an exercise for the reader.
Re: SQL-Syntax unter Windows und Linux
am 28.01.2007 18:47:25 von Kai Ruhnau
Kommentiertes Fullquote + Fup2 de.comp.lang.php.datenbanken
Hermann Splitthoff wrote:
> Hallo liebe Leute,
>
> derzeit lerne ich ein bisschen mit MySL umzugehen. Dabei greife ich auf
> Bespiele aus einem Buch zurück. Nun ist es so, dass ich normalerweise unter
> Windows arbeite und da klappt auch alles, was ich so anstelle und aus dem
> Buch abschreibe. Das gleiche klappt unter Linux - ich bin gerade mit dem
> Umstieg von Windows auf Linux beschäftigt - nicht.
Du hast ein PHP-Problem, kein MySQL-Problem. Wenn das folgende
tatsächlich in deinem Buch steht, wirf es weg - weit weg.
Alternativ kannst du damit einen wackelnden Tisch unterstützen oder ein
Kaminfeuer entfachen.
> Hier mal die zugrundeliegende Syntax in einem PHP-File:
>
>
>
Beispieldatenbank Buch
>
> Suchergebnis
Vor H3 kommt noch H1 und H2. Nur weil die Formatierung "passt" wird es
nicht mit einem mal semantisch sinnvoll.
>
>
> $link=mysql_connect("localhost","",""); mysql_select_db("test");
Tatsächlich ohne Benutzer und Passwort? Das wären Defaulteinstellungen
einer frischen Installation. Ändere das.
> $anfrage="SELECT * FROM buch WHERE $Attribut LIKE '$Suchanfrage' ORDER BY
> Autor;";
16.14. Warum soll ich nicht SELECT * schreiben?
http://php-faq.de/q/q-sql-select.html
11.20. Warum funktionieren meine Formulare nicht?
http://php-faq.de/q/q-formular-register-globals.html
16.18. Wie kann ich bösartigen Code in SQL-Abfragen unterbinden?
http://www.php-faq.de/q/q-sql-injection.html
> $ergebnis=mysql_query($anfrage) or die ("Fehlermeldung=".mysql_error());
> echo mysql_num_rows($ergebnis)." Datensätze ";
> echo "
";
> for ($i=0;$i
> "".mysql_field_name($ergebnis,$i)." | "; };
> while ($zeile=mysql_fetch_row($ergebnis))
> { echo "";
> for ($i=0;$i
> "".$zeile[$i]." | ";};
> echo "
"; };
> echo "
";
Quelltext ist nicht für Maschinen, sondern für Menschen. Die mögen es
üblicherweise, wenn etwas lesbar formatiert ist. Nebenbei hast du
diverse ; zuviel in diesem Schnippsel und quotest mit nichts die Ausgabe
aus der Datenbank. Ist das Buch schon weg?
> mysql_free_result($ergebnis); mysql_close($link);
> ?>
>
>
>
>
>
>
> Die Syntax der SQL-Anweisung in Zeile 8 wird unter Windows problemlos
Welche ist Zeile 8? Sollen wir etwa selber zählen?
> akzeptiert (MySQL 3.x).
Wo hast du die denn ausgegraben? Ändere das dringend!
> Unter Linux (MySQL 5.x) erscheint folgende Fehlermeldung:
>
> You have an error in your SQL-Syntax; check .... right syntax to use near
> 'LIKE" ORDER BY Autor' at line 1
Hast du das per Copy + Paste hier reingeholt? Oder hast du das
abgeschrieben? Da in "Zeile 8" innerhalb der SQL-Anweisung kein "
vorkommt, gehe ich mal von letzterem aus. Nicht gut.
> Ich gehe mal davon aus, dass das mit mit Abfrage-Formular (Abfrage.html)
> zusammenhängt. Da werden über Textboxen und Dropdownlisten Abfrageparameter
> abgefragt und in die "Suchanfrage" übergeben. Nach Bestätigung durch der
> Parameter wird die Datei "Abfrage.php" aufgerufen. Statt eines Ergebnisses -
> wie unter Windows - erhalte ich dann obige Fehlermeldung.
Die Fehlermeldung ist nur ein Symptom, die Probleme sind weitaus größer.
> Hat jemand einen Tipp für mich? Vielen Dank im voraus.
Ich hab' mal angefangen.
HTH und Grüße
Kai
--
This signature is left as an exercise for the reader.
Re: SQL-Syntax unter Windows und Linux
am 28.01.2007 19:02:18 von Claus Reibenstein
Hermann Splitthoff schrieb:
> derzeit lerne ich ein bisschen mit MySL umzugehen. Dabei greife ich auf
> Bespiele aus einem Buch zurück. Nun ist es so, dass ich normalerweise unter
> Windows arbeite und da klappt auch alles, was ich so anstelle und aus dem
> Buch abschreibe. Das gleiche klappt unter Linux - ich bin gerade mit dem
> Umstieg von Windows auf Linux beschäftigt - nicht.
Das liegt aber nicht an der Datenbank. Es ist Dein PHP-Programm, welches
buggy ist. Ich leite die Antwort daher mal in die passende Gruppe weiter.
> $anfrage="SELECT * FROM buch WHERE $Attribut LIKE '$Suchanfrage' ORDER BY
> Autor;";
Hier benutzt Du zwei Variablen $Attribut und $Suchanfrage, die zu diesem
Zeitpunkt noch keinen Wert haben. Das Ergebnis ist dieser SQL-String:
SELECT * FROM buch WHERE LIKE '' ORDER BY Autor;
> You have an error in your SQL-Syntax; check .... right syntax to use near
> 'LIKE" ORDER BY Autor' at line 1
Diese Fehlermeldung ist eine Folge davon.
> Ich gehe mal davon aus, dass das mit mit Abfrage-Formular (Abfrage.html)
> zusammenhängt. Da werden über Textboxen und Dropdownlisten Abfrageparameter
> abgefragt und in die "Suchanfrage" übergeben.
Per GET oder per POST?
> Nach Bestätigung durch der
> Parameter wird die Datei "Abfrage.php" aufgerufen. Statt eines Ergebnisses -
> wie unter Windows - erhalte ich dann obige Fehlermeldung.
Das deutet darauf hin, dass Du unter Windows register_globals auf on
stehen hast, unter Linux jedoch auf off (was wesentlich gesünder ist).
Die Werte eines Formulars findest Du in PHP je nach Methode in den
Arrays $_GET oder $_POST. Als Index musst Du den Namen des
Formularelements benutzen. Heißt das Element z.B. Blah, findest Du den
zugehörigen Wert in $_GET['Blah'] bzw. $_POST['Blah'].
Gruß. Claus
--
,~°O O
O ,´ / |/|\
/ |¯`. Das neue Hochzeits-Branchenbuch im Internet ,´ / | |\
/__| `~...............................................~´ /___|/ /
Re: SQL-Syntax unter Windows und Linux
am 28.01.2007 19:02:18 von Claus Reibenstein
Hermann Splitthoff schrieb:
> derzeit lerne ich ein bisschen mit MySL umzugehen. Dabei greife ich auf
> Bespiele aus einem Buch zurück. Nun ist es so, dass ich normalerweise unter
> Windows arbeite und da klappt auch alles, was ich so anstelle und aus dem
> Buch abschreibe. Das gleiche klappt unter Linux - ich bin gerade mit dem
> Umstieg von Windows auf Linux beschäftigt - nicht.
Das liegt aber nicht an der Datenbank. Es ist Dein PHP-Programm, welches
buggy ist. Ich leite die Antwort daher mal in die passende Gruppe weiter.
> $anfrage="SELECT * FROM buch WHERE $Attribut LIKE '$Suchanfrage' ORDER BY
> Autor;";
Hier benutzt Du zwei Variablen $Attribut und $Suchanfrage, die zu diesem
Zeitpunkt noch keinen Wert haben. Das Ergebnis ist dieser SQL-String:
SELECT * FROM buch WHERE LIKE '' ORDER BY Autor;
> You have an error in your SQL-Syntax; check .... right syntax to use near
> 'LIKE" ORDER BY Autor' at line 1
Diese Fehlermeldung ist eine Folge davon.
> Ich gehe mal davon aus, dass das mit mit Abfrage-Formular (Abfrage.html)
> zusammenhängt. Da werden über Textboxen und Dropdownlisten Abfrageparameter
> abgefragt und in die "Suchanfrage" übergeben.
Per GET oder per POST?
> Nach Bestätigung durch der
> Parameter wird die Datei "Abfrage.php" aufgerufen. Statt eines Ergebnisses -
> wie unter Windows - erhalte ich dann obige Fehlermeldung.
Das deutet darauf hin, dass Du unter Windows register_globals auf on
stehen hast, unter Linux jedoch auf off (was wesentlich gesünder ist).
Die Werte eines Formulars findest Du in PHP je nach Methode in den
Arrays $_GET oder $_POST. Als Index musst Du den Namen des
Formularelements benutzen. Heißt das Element z.B. Blah, findest Du den
zugehörigen Wert in $_GET['Blah'] bzw. $_POST['Blah'].
Gruß. Claus
--
,~°O O
O ,´ / |/|\
/ |¯`. Das neue Hochzeits-Branchenbuch im Internet ,´ / | |\
/__| `~...............................................~´ /___|/ /
Re: SQL-Syntax unter Windows und Linux
am 28.01.2007 19:15:33 von Claus Reibenstein
Kai Ruhnau schrieb:
> Kommentiertes Fullquote + Fup2 de.comp.lang.php.datenbanken
Und warum nach .datenbanken und nicht nach .misc? Wie Du selber ja
richtig bemerkt hast, hat das Problem _nichts_ mit Datenbanken zu tun,
sondern ist ein reines PHP-Problem.
Ich habe Dein Fup2 mal korrigiert.
Der Fullquote war eigentlich überflüssig :-)
> Hermann Splitthoff wrote:
>
>>
Suchergebnis
>
> Vor H3 kommt noch H1 und H2. Nur weil die Formatierung "passt" wird es
> nicht mit einem mal semantisch sinnvoll.
Nun übertreib mal nicht.
>> $anfrage="SELECT * FROM buch WHERE $Attribut LIKE '$Suchanfrage' ORDER BY
>> Autor;";
>> [...]
>>
>> Die Syntax der SQL-Anweisung in Zeile 8 wird unter Windows problemlos
>
> Welche ist Zeile 8? Sollen wir etwa selber zählen?
Sorry, aber in diesem Programmschnipsel ist genau _eine_ SQL-Anweisung
enthalten (s.o.), und diese eine ist auch problemlos zu finden. _Ich_
habe sie jedenfalls _sofort_ gesehen.
>> You have an error in your SQL-Syntax; check .... right syntax to use near
>> 'LIKE" ORDER BY Autor' at line 1
>
> Hast du das per Copy + Paste hier reingeholt? Oder hast du das
> abgeschrieben? Da in "Zeile 8" innerhalb der SQL-Anweisung kein "
> vorkommt, gehe ich mal von letzterem aus. Nicht gut.
Das ist mir gar nicht aufgefallen. Mir hat LIKE schon genügt, um den
Fehler zu erkennen.
Gruß. Claus
--
,~°O O
O ,´ / |/|\
/ |¯`. Das neue Hochzeits-Branchenbuch im Internet ,´ / | |\
/__| `~...............................................~´ /___|/ /
Re: SQL-Syntax unter Windows und Linux
am 28.01.2007 19:15:33 von Claus Reibenstein
Kai Ruhnau schrieb:
> Kommentiertes Fullquote + Fup2 de.comp.lang.php.datenbanken
Und warum nach .datenbanken und nicht nach .misc? Wie Du selber ja
richtig bemerkt hast, hat das Problem _nichts_ mit Datenbanken zu tun,
sondern ist ein reines PHP-Problem.
Ich habe Dein Fup2 mal korrigiert.
Der Fullquote war eigentlich überflüssig :-)
> Hermann Splitthoff wrote:
>
>>
Suchergebnis
>
> Vor H3 kommt noch H1 und H2. Nur weil die Formatierung "passt" wird es
> nicht mit einem mal semantisch sinnvoll.
Nun übertreib mal nicht.
>> $anfrage="SELECT * FROM buch WHERE $Attribut LIKE '$Suchanfrage' ORDER BY
>> Autor;";
>> [...]
>>
>> Die Syntax der SQL-Anweisung in Zeile 8 wird unter Windows problemlos
>
> Welche ist Zeile 8? Sollen wir etwa selber zählen?
Sorry, aber in diesem Programmschnipsel ist genau _eine_ SQL-Anweisung
enthalten (s.o.), und diese eine ist auch problemlos zu finden. _Ich_
habe sie jedenfalls _sofort_ gesehen.
>> You have an error in your SQL-Syntax; check .... right syntax to use near
>> 'LIKE" ORDER BY Autor' at line 1
>
> Hast du das per Copy + Paste hier reingeholt? Oder hast du das
> abgeschrieben? Da in "Zeile 8" innerhalb der SQL-Anweisung kein "
> vorkommt, gehe ich mal von letzterem aus. Nicht gut.
Das ist mir gar nicht aufgefallen. Mir hat LIKE schon genügt, um den
Fehler zu erkennen.
Gruß. Claus
--
,~°O O
O ,´ / |/|\
/ |¯`. Das neue Hochzeits-Branchenbuch im Internet ,´ / | |\
/__| `~...............................................~´ /___|/ /
Re: SQL-Syntax unter Windows und Linux
am 28.01.2007 19:27:11 von Hermann Splitthoff
"Kai Ruhnau" schrieb im Newsbeitrag
news:epinio$5p6$01$1@news.t-online.com...
Hallo Kai,
vielen Dank für Deine Antwort. Ich hoffe, das ein oder andere daraus
mitnehmen und beherzigen zu können. Die Version 3.x von MySQL liegt schon
seit Jahren auf meinem (Windows-)Rechner und läuft. Dann und wann "übe" ich
mal damit. Den Linuxrechner habe ich neu aufgebaut und daher dort die neuere
Version installiert.
Einiges an Deinen Antworten muss ich mir noch durch den Kopf gehen lassen,
denn wenn etwas läuft - auch wenn ich recht simpel und flach ist - muss ich
mir doch erstmal keine Gedanken darüber machen, ob es auf einem anderen
System nicht auch klappert. Ich habe meine Frage gestellt, weil das
miserable Script einerseits läuft und andererseits zu Fehlermeldungen führt.
Das es sich ggfs. um ein PHP-Problem handelt ist für mich ein wichtiger
Hinweis. Danke!
Achja, natürlich habe ich im Quelltext, den ich hier reim kopiert habe, die
Informationen zum User und zum Kennwort entfernt. Sowas muss ja nicht durchs
Netz - find' ich jedenfalls.
>> wie unter Windows - erhalte ich dann obige Fehlermeldung.
> Die Fehlermeldung ist nur ein Symptom, die Probleme sind weitaus größer.
Wahrscheinlich habe ich deswegen diese blöde Frage gestellt. Alle Anfänge
sind schwer, besonders dann, wenn man nicht fragen darf.
> > Hat jemand einen Tipp für mich? Vielen Dank im voraus.
> Ich hab' mal angefangen.
Nochmals: vielen Dank dafür.
Schönen Gruß
Hermann Splitthoff
Re: SQL-Syntax unter Windows und Linux
am 29.01.2007 10:13:57 von Martin Lemke
Hermann Splitthoff schrieb:
> Die Version 3.x von MySQL liegt schon seit Jahren auf meinem (Windows-)Rechner und läuft. Dann und wann "übe" ich
> mal damit.
Um in MySQL + PHP einzusteigen ist es egal, ob Du unter Windows oder Linux
arbeitest. Da Du offesichtlich nicht durch das schlechte Angebot eines
Hosters dazu gezwungen wirst, veraltete Software zu verwenden, solltest Du
unter Windows und Linux aktuelle Versionen installieren.
php 5.* und mySql 5.*
> Einiges an Deinen Antworten muss ich mir noch durch den Kopf gehen lassen,
> denn wenn etwas läuft - auch wenn ich recht simpel und flach ist - muss ich
> mir doch erstmal keine Gedanken darüber machen, ob es auf einem anderen
> System nicht auch klappert.
Wenn Dein Code nicht kompatibel zwischen den Systemen Linux und Windwos
ist, ist er schlecht. Vielleicht solltest Du mit einfacheren Beispielen
beginnen.
Auf MySQL würde ich an Deiner Stelle über PDO in Verbindung mit einem
leistungsfähigem Framework zugreifen. Z. B. das Zend-Framework. das
erffolgt objektorientiert.
Den illusteren Mix aus php-Source und html-Ausgabe sollte man sich als
Programmierstil gar nicht erst aneigenen. Ich weiß nicht, von welchem Buch
da die Rede ist. Zu php gibt es leider auch von renomierten Verlagen Schund
auf dem Markt.
> Ich habe meine Frage gestellt, weil das miserable Script einerseits läuft
Versuche den Sinn und die Arbeitsweise des Skriptes zu verstehen und baue
ein besseres in dem Progammsteuerung und html-Ausgabe einigermaßen getrennt
werden.
Das sieht im ersten Moment vielleicht wie vermeidbare Mehrarbeit aus, aber
spätestens wenn im Programmablauf oder der Präsentation der Ergebnisse
etwas geändert werden muss, wirst Du froh darüber sein, das Wirrwarr an
Code und html nicht erst analysieren zu müssen, um etwas zu ändern. Ich
spreche aus Erfahrung, weil ich diesen Fehler als Anfänger auch gemacht
habe.
Die schnelle Lösung macht Freude, aber wehe, wenn ein gewachsenes Ungetüm
später mal geändert werden muss.
> Wahrscheinlich habe ich deswegen diese blöde Frage gestellt.
Fragen sind selten wirklich blöde. Es ist (hier) leider oft so, dass die
falsche Frage gestellt wird. Bevor man antworten kann, muss man oft erst
erraten, was der Frager eigentlich erzielen will, also wo das eigentliche
Problem liegt.
> Alle Anfänge sind schwer, besonders dann, wenn man nicht fragen darf.
Für Fragen bist Du hier an der richtigen Stelle.
Was ist denn das Problem? Aus dem geforwardeten Artikel geht das nicht
richtig hervor.
Martin
p.s.: Claus hat Recht; fup: de.comp.lang.php.misc
Re: SQL-Syntax unter Windows und Linux
am 29.01.2007 10:13:57 von Martin Lemke
Hermann Splitthoff schrieb:
> Die Version 3.x von MySQL liegt schon seit Jahren auf meinem (Windows-)Rechner und läuft. Dann und wann "übe" ich
> mal damit.
Um in MySQL + PHP einzusteigen ist es egal, ob Du unter Windows oder Linux
arbeitest. Da Du offesichtlich nicht durch das schlechte Angebot eines
Hosters dazu gezwungen wirst, veraltete Software zu verwenden, solltest Du
unter Windows und Linux aktuelle Versionen installieren.
php 5.* und mySql 5.*
> Einiges an Deinen Antworten muss ich mir noch durch den Kopf gehen lassen,
> denn wenn etwas läuft - auch wenn ich recht simpel und flach ist - muss ich
> mir doch erstmal keine Gedanken darüber machen, ob es auf einem anderen
> System nicht auch klappert.
Wenn Dein Code nicht kompatibel zwischen den Systemen Linux und Windwos
ist, ist er schlecht. Vielleicht solltest Du mit einfacheren Beispielen
beginnen.
Auf MySQL würde ich an Deiner Stelle über PDO in Verbindung mit einem
leistungsfähigem Framework zugreifen. Z. B. das Zend-Framework. das
erffolgt objektorientiert.
Den illusteren Mix aus php-Source und html-Ausgabe sollte man sich als
Programmierstil gar nicht erst aneigenen. Ich weiß nicht, von welchem Buch
da die Rede ist. Zu php gibt es leider auch von renomierten Verlagen Schund
auf dem Markt.
> Ich habe meine Frage gestellt, weil das miserable Script einerseits läuft
Versuche den Sinn und die Arbeitsweise des Skriptes zu verstehen und baue
ein besseres in dem Progammsteuerung und html-Ausgabe einigermaßen getrennt
werden.
Das sieht im ersten Moment vielleicht wie vermeidbare Mehrarbeit aus, aber
spätestens wenn im Programmablauf oder der Präsentation der Ergebnisse
etwas geändert werden muss, wirst Du froh darüber sein, das Wirrwarr an
Code und html nicht erst analysieren zu müssen, um etwas zu ändern. Ich
spreche aus Erfahrung, weil ich diesen Fehler als Anfänger auch gemacht
habe.
Die schnelle Lösung macht Freude, aber wehe, wenn ein gewachsenes Ungetüm
später mal geändert werden muss.
> Wahrscheinlich habe ich deswegen diese blöde Frage gestellt.
Fragen sind selten wirklich blöde. Es ist (hier) leider oft so, dass die
falsche Frage gestellt wird. Bevor man antworten kann, muss man oft erst
erraten, was der Frager eigentlich erzielen will, also wo das eigentliche
Problem liegt.
> Alle Anfänge sind schwer, besonders dann, wenn man nicht fragen darf.
Für Fragen bist Du hier an der richtigen Stelle.
Was ist denn das Problem? Aus dem geforwardeten Artikel geht das nicht
richtig hervor.
Martin
p.s.: Claus hat Recht; fup: de.comp.lang.php.misc
Re: SQL-Syntax unter Windows und Linux
am 29.01.2007 18:53:15 von dev-null-use-reply-adress
Hallo,
entwirren wir das mal auf das (vermutlich) wesentliche.
Kai Ruhnau schrieb:
> Hermann Splitthoff wrote:
>> $anfrage="SELECT * FROM buch WHERE $Attribut LIKE '$Suchanfrage' ORDER BY
>> Autor;";
>
> 11.20. Warum funktionieren meine Formulare nicht?
> http://php-faq.de/q/q-formular-register-globals.html
>> Unter Linux (MySQL 5.x) erscheint folgende Fehlermeldung:
Und vermutlich dann auch PHP 5.x, oder mind. ein ziemlich aktuelles 4er.
>> You have an error in your SQL-Syntax; check .... right syntax to use near
>> 'LIKE" ORDER BY Autor' at line 1
$Attribut und $Suchanfrage kamen aus einem Suchformular in diese Script?
Nun gut, das Anführungszeichen hinter dem LIKE ist vielleicht doch keines,
sondern zwei einfache. Auf jeden Fall steht nix drin und die Spaltenangabe
vor dem LIKE ($Attribut) dürfte wohl auch leer sein.
Meine Kristallkugel gibt jedenfalls mit 99%iger Wahrscheinlichkeit ein
register_globals Problem zurück.
@Hermann: Du möchtest die obige FAQ beachten.
HTH
JPM