Problem mit SELECT

Problem mit SELECT

am 07.02.2005 22:53:18 von Dennis Schmidt

Hallo,
Ich habe eine eigentlich ganz simple Abfrage an die Datenbank.
Dies führe ich ganz normal mit PHP aus:

######################################

$ergebnis = mysql_query("SELECT * FROM dwct_vote_voted WHERE vote_id = 0
AND voter_id = INET_ATON('127.0.0.1') LIMIT 1;");
echo mysql_num_rows($ergebnis);

######################################

Aus mir absolut unerfindlichen Gründen liefert diese Abfrage ein
Eregbnis wenn ich sie über phpmyadmin ausführe, wenn ich sie allerdings
so wie sie oben steht mit PHP selber ausführe, dann wird mir ein leeres
Ergebnis geliefert.

Woran zum Henker kann das liegen?

Re: Problem mit SELECT

am 07.02.2005 23:33:03 von Frederik Ziebell

Dennis Schmidt wrote:
> Hallo,
> Ich habe eine eigentlich ganz simple Abfrage an die Datenbank.
> Dies führe ich ganz normal mit PHP aus:
>
> ######################################
>
> $ergebnis = mysql_query("SELECT * FROM dwct_vote_voted WHERE vote_id = 0
> AND voter_id = INET_ATON('127.0.0.1') LIMIT 1;");
> echo mysql_num_rows($ergebnis);
>
> ######################################
>
> Aus mir absolut unerfindlichen Gründen liefert diese Abfrage ein
> Eregbnis wenn ich sie über phpmyadmin ausführe, wenn ich sie allerdings
> so wie sie oben steht mit PHP selber ausführe, dann wird mir ein leeres
> Ergebnis geliefert.
Lass dir mal $ergebnis mittels echo $ergebnis; ausgeben und sende diese
Ausgabe an phpMyAdmin.

Re: Problem mit SELECT

am 07.02.2005 23:47:07 von Hartmut Holzgraefe

Frederik Ziebell wrote:
> Lass dir mal $ergebnis mittels echo $ergebnis; ausgeben und sende diese
> Ausgabe an phpMyAdmin.

Warum soll er einen Leerstring in phpMyAdmin pasten?

$ergebnis ist false und "echo false;" gibt nichts aus

--
Hartmut Holzgraefe, Senior Support Engineer .
MySQL AB, www.mysql.com

Are you MySQL certified? www.mysql.com/certification

Re: Problem mit SELECT

am 07.02.2005 23:49:43 von Hartmut Holzgraefe

Dennis Schmidt wrote:
> ######################################
>=20
> $ergebnis =3D mysql_query("SELECT * FROM dwct_vote_voted WHERE vote_id =
=3D 0=20
> AND voter_id =3D INET_ATON('127.0.0.1') LIMIT 1;");
> echo mysql_num_rows($ergebnis);
>=20
> ######################################
>=20
> Aus mir absolut unerfindlichen Gründen liefert diese Abfrage ein=20
> Eregbnis wenn ich sie über phpmyadmin ausführe, wenn ich sie allerd=
ings=20
> so wie sie oben steht mit PHP selber ausführe, dann wird mir ein leer=
es=20
> Ergebnis geliefert.

Das Problem ist das abschließende Semikolon, das ist eine Eigenart
des MySQL Commandline Clients (und anscheinend auch von phpMyAdmin?)
zur Kommandotrennung.

Der Server versteht das nicht, d.h. wenn der Client das nicht ausfiltert
(und PHP tut das nicht) dann gibts eine Fehlermeldung.

Und diese hättest du auch gesehen wenn du den Rückgabewert von
mysql_query() geprüft und dir im 'false' Fall das Ergebnis von
mysql_error() ausgeben lassen hättest

--=20
Hartmut Holzgraefe, Senior Support Engineer .
MySQL AB, www.mysql.com

Are you MySQL certified? www.mysql.com/certification

Re: Problem mit SELECT

am 08.02.2005 08:11:47 von Dennis Schmidt

*hust*
Is mir ja richtig peinlich das jetzt zu schreiben.
Erstmal danke für die ntworten :)

Der Fehler lab jedoch mehr oder weniger an meiner Inkompetenz ^^
Und zwar war diese query ja noch in eine Funktion eingebettet. Diese hat
vorher alle Einträge in der Tabelle gelöscht, deren Timestamp zu alt
ist. Eigentlich wäre der Timestamp nicht zu alt gewesen. Aber ich habe
vergessen die globale Variable, die die Zeit festlegt ab wann der
Timestamp alt auch korrekt als global zu definieren. Folglich hat die
Funktion einfach alle Reihen gelöscht *hust*

Mit phpMyAdmin is mir das natürlich nicht aufgefallen, da der Eintrag am
Ende wieder erstellt wurde, also auch mit dem SELECT gelesen werden konnte.

Is mir das peinlich ^^

Re: Problem mit SELECT

am 08.02.2005 08:38:28 von Thomas Hamacher

Hartmut Holzgraefe schrieb:
> Dennis Schmidt wrote:

>> $ergebnis = mysql_query("SELECT * FROM dwct_vote_voted WHERE vote_id =
>> 0 AND voter_id = INET_ATON('127.0.0.1') LIMIT 1;");
>> echo mysql_num_rows($ergebnis);

>> Aus mir absolut unerfindlichen Gründen liefert diese Abfrage ein
>> Eregbnis wenn ich sie über phpmyadmin ausführe, wenn ich sie
>> allerdings so wie sie oben steht mit PHP selber ausführe, dann wird
>> mir ein leeres Ergebnis geliefert.
> Das Problem ist das abschließende Semikolon, das ist eine Eigenart
> des MySQL Commandline Clients (und anscheinend auch von phpMyAdmin?)
> zur Kommandotrennung.

Ja, PHPMyAdmin macht das automagisch.

> Der Server versteht das nicht, d.h. wenn der Client das nicht ausfiltert
> (und PHP tut das nicht) dann gibts eine Fehlermeldung.

Welche Serverversion betrifft das? Bei MySQL 4.1.x gibt es keinen
Fehler, wenn man das Statement mit einem Semikolon abschliesst.