Re: SQL DB-Fragen

Re: SQL DB-Fragen

am 09.09.2004 11:55:37 von Tobias Kutzler

Bernd Kuegle schrieb:
> Hallo!
>
> Hätte da als Newbie einige Fragen bzgl. SQL-DB´s:
> - Offensichtlich sind SQL Statements aus Access nicht kompatibel!?

Das Problem ist, dass Access irgendwie sein eigenes Süppchen kocht. Ich
ärgere mich auch ständig damit herum, die Anfragen bei einer Portierung
zwischen MS SQL-Server und Access umstellen zu müssen.

Aber es ist allgemein so, dass die Syntax sich zwischen den einzelnen
Systemen unterscheidet. So ist es auch ohne weiteres nicht möglich (aber
leichter als von Access zu MS SQL-Server ;-) ) vom MS SQL-Server zu
mySQL umzusteigen, da sich die Syntax in einigen Punkten unterscheidet
(analog Access dann zu mySQL, da halt nur erheblich umfangreicher).

Die einzige Lösung, die sich dazu anbietet, ist der Versuch die grösste
gemeinsame Menge an Funktionen und Syntax zu nutzen, die bei allen
gewünschten Datenbanken gleich ist. SELECT ... FROM ... WHERE ... ist
immer gleich. Schwierig wirds dann schon bei Datumsformaten. Access
verlangt ein Datumsliteral (#09/09/2004 12:00:00#), mySQL ISO Format
(2004-09-09 12:00:00) und MS SQL Server nimmt das normale Format
(09.09.2004 12:00:00). Also nicht einfach...

> - Gibt es ein kleines Tool, mit dem man funktionierende Abfragen einfach
> erstellen kann?

Kenn ich leider keins. Das einzige was ich kenne, ist ein Abfragetool
direkt für die entsprechende Datenbank, in welchem ich die Abfragen
ausprobiere.

> - Warum funktioniert diese Einfachabfrage zwar direkt in der DB, aber nicht
> in meinem php-Script. Erhalte immer die Fehlermeldung, "parse error in Zeile
> 77":
> 76: $query = 'SELECT * FROM `tbl_p` WHERE pass != \'\'';

Hier sind meiner Meinung nach 2 Fehler drin:
- Hochkommas vor und nach tbl_p bitte weglassen
- statt WHERE pass != \'\' folgendes: WHERE NOT PASS = \'\'

Dann sollte es gehen (ungetestet).

Ein kleiner Hinweis noch (falls Du es noch nicht kennst):
16.14. Warum soll ich nicht SELECT * schreiben?
http://www.dclp-faq.de/q/q-sql-select.html

> 77: $result = mysql_query($query);
>
> Vielen Dank
> Bernd
>
>

Bitteschön.

Ciao,
Tobias

Re: SQL DB-Fragen

am 09.09.2004 12:47:27 von Marco Erb

Tobias Kutzler schrieb:
>> - Gibt es ein kleines Tool, mit dem man funktionierende Abfragen einfach
>> erstellen kann?

Naja, mit phpMyAdmin kann man solche simplen Abfragen erstellen, einfach
in der jeweiligen Tabelle auf "Teilw. anzeigen" klicken.

> Kenn ich leider keins. Das einzige was ich kenne, ist ein Abfragetool
> direkt für die entsprechende Datenbank, in welchem ich die Abfragen
> ausprobiere.
>
>> - Warum funktioniert diese Einfachabfrage zwar direkt in der DB, aber
>> nicht
>> in meinem php-Script. Erhalte immer die Fehlermeldung, "parse error in
>> Zeile
>> 77":
>> 76: $query = 'SELECT * FROM `tbl_p` WHERE pass != \'\'';
>
>
> Hier sind meiner Meinung nach 2 Fehler drin:
> - Hochkommas vor und nach tbl_p bitte weglassen

Nönö, ganz im Gegenteil, eigentlich sollte man die ` immer benutzen,
sowohl bei Datenbank-,Tabellen- und Feldnamen

> - statt WHERE pass != \'\' folgendes: WHERE NOT PASS = \'\'

müsste aber eigentlich auch so gehen, z.B. klappt bei mir auch folgende
Abfrage.

SELECT *
FROM `mails`
WHERE `email` != ''

Was ich aber machen würde, ich würde SQL-Statements grundsätzlich in "
und nicht in ' scheiben, weil man sich da sonst 'nen Wolf excaped, also so:

$query = "SELECT * FROM `tbl_p` WHERE `pass` != ''";

Vielleicht ist pass ja ein Keyword, keine ahnung, dass es deswegen auf
jeden Fall in ` eingeschlossen werden muss.

Weil ich sehe da keine Fehler, am besten mal mysql_error(); benutzen.

Gruß

Marco

Re: SQL DB-Fragen

am 09.09.2004 14:30:22 von Niels Braczek

Marco Erb schrieb:
> Tobias Kutzler schrieb:

>>> 76: $query = 'SELECT * FROM `tbl_p` WHERE pass != \'\'';

>> Hier sind meiner Meinung nach 2 Fehler drin:
>> - Hochkommas vor und nach tbl_p bitte weglassen
>
> Nönö, ganz im Gegenteil, eigentlich sollte man die ` immer benutzen,
> sowohl bei Datenbank-,Tabellen- und Feldnamen

Nei. Man wählt aus Portabilitätsgründen nur Namen, die diese Backticks
nicht benötigen. Man will Backticks möglichst *nicht* benutzen.

MfG
Niels

--
Das Senden unbestellter Werbung an diese E-Mail-Adresse ist
gegen eine Aufwandsentschädigung von 250 Euro pro erhaltener
E-Mail gestattet. Rabatte auf Anfrage.
Die Beweislast der Bestellung liegt bei der Werbung versendenen Firma.

Re: SQL DB-Fragen

am 09.09.2004 18:53:28 von Michael Fesser

.oO(Marco Erb)

>Was ich aber machen würde, ich würde SQL-Statements grundsätzlich in "
>und nicht in ' scheiben, weil man sich da sonst 'nen Wolf excaped, also so:
>
>$query = "SELECT * FROM `tbl_p` WHERE `pass` != ''";

Oder auch andersrum, spart dem PHP-Parser etwas Arbeit:

$query = 'SELECT * FROM tbl_p WHERE pass != ""';

>Vielleicht ist pass ja ein Keyword, keine ahnung, dass es deswegen auf
>jeden Fall in ` eingeschlossen werden muss.
>
>Weil ich sehe da keine Fehler, am besten mal mysql_error(); benutzen.

Es war aber kein MySQL-, sondern ein PHP-Fehler.

Micha

Re: SQL DB-Fragen

am 10.09.2004 09:14:19 von Bernd Kuegle

"Michael Fesser" schrieb im Newsbeitrag
news:0d21k09sq7em1v7f50060e6nckoer1misd@4ax.com...
> .oO(Marco Erb)
>
> >Was ich aber machen würde, ich würde SQL-Statements grundsätzlich in "
> >und nicht in ' scheiben, weil man sich da sonst 'nen Wolf excaped, also
so:
> >
> >$query = "SELECT * FROM `tbl_p` WHERE `pass` != ''";
>
> Oder auch andersrum, spart dem PHP-Parser etwas Arbeit:
>
> $query = 'SELECT * FROM tbl_p WHERE pass != ""';
>
> >Vielleicht ist pass ja ein Keyword, keine ahnung, dass es deswegen auf
> >jeden Fall in ` eingeschlossen werden muss.
> >
> >Weil ich sehe da keine Fehler, am besten mal mysql_error(); benutzen.
>
> Es war aber kein MySQL-, sondern ein PHP-Fehler.
>
> Micha

Hallo Micha!
Habe deinen Vorschlag auch ausprobiert. Interessanterweise funktioniert
diese Schreibweise bei mir nicht!?

Grüße
Bernd

Re: SQL DB-Fragen

am 10.09.2004 21:06:55 von Niels Braczek

Bernd Kuegle schrieb:

> Habe deinen Vorschlag auch ausprobiert. Interessanterweise
> funktioniert diese Schreibweise bei mir nicht!?

Funktioniert nicht heißt: "Der Server ist explodiert"?

Lies bitte mal
1.17. Wie stelle ich meine Frage an die Newsgroup am sinnvollsten?
http://www.dclp-faq.de/q/q-newsgroup-fragen.html

MfG
Niels

--
Eigendlich is n Standart in der Rechtschreibung föllig
egal. Hauptsache is, mann ferstet mich! Ich kapier nur
ned, wiso der PHP-Pharser immer mekert?

Re: SQL DB-Fragen

am 17.09.2004 17:37:38 von Michael Fesser

.oO(Bernd Kuegle)

>"Michael Fesser" schrieb im Newsbeitrag
>news:0d21k09sq7em1v7f50060e6nckoer1misd@4ax.com...
>> $query = 'SELECT * FROM tbl_p WHERE pass != ""';
>>
>Habe deinen Vorschlag auch ausprobiert. Interessanterweise funktioniert
>diese Schreibweise bei mir nicht!?

OK, ich hätte dazu sagen sollen, daß es sich bei Strings in double
quotes um eine Erweiterung des ANSI-Standards in MySQL handelt. Sprich:
In anderen DBMS funktioniert das nicht und auch in MySQL nicht immer.

Mi'Asche auf mein Haupt'cha