Fehlermeldung

mic67

Grünschnabel
Dieses Forum ist ja echt interessant sind sehr gute Beiträge und habe mich auch schon ein wenig eingelesen! Lese lieber als zu schreiben! Wurde auf dieses Forum aufmerksam gemacht in einem anderen Forum http://www.derproblemloesungsweg.de/forum werde jetzt bestimmt öfter mal kommen und auch bestimmt zu einigen Themen was sagen bzw. schreiben! Ich hoffe das ich für mein Problem hier auch eine Lösung finden! Ich habe eine Fehlermeldung (Zeile 57) und find den Fehler nicht.Bin schon am verzweifeln und weiß nicht mehr weiter
Hier die Zeilen 56 und 57:

Code:
$res1 = mysql_query("select count(*) from veranstaltung");
if($row = mysql_fetch_row($res1))
Weiß jemand Rat? Oder wie weiter komme bin für jede Hilfe dankbar!
 
'Tschuldigung, Kristallkugel ist in der Reinigung... Also müsstest du uns auf die Sprünge helfen, was denn überhaupt für ein Fehler kommt. Sonst können wur dir nicht helfen! Und formatiere PHP-Code doch auch als solchen ([ php] // code... [/ php], ohne die Leerzeichen...).

Nachtrag
Was immer gut ist, wenn du hinter [phpf]mysql_query[/phpf] ein or die([phpf]mysql_error[/phpf]) drann hängst, also:
PHP:
$result = mysql_query($query) or die(mysql_error());
 
Zuletzt bearbeitet:
Rein Syntaktisch sind die Zeilen richtig. Was ist denn die Fehlermeldung?

Und verwende bitte das die[ PHP ] BB Tags um das Highlighting zu aktivieren. Oben in der Eingabebox ist auch ein Symbol dafür.


Edit: wha zu langsam beim schreiben xD
 
Wenn ich mich nicht irre duerfte das Problem im SQL-Statement liegen. Ich glaube count(*) geht nicht, sodass Du bei count() wirklich eines der Felder der Tabelle angeben musst, was aber ergebnistechnisch keinen Unterschied macht.
Ansonsten koenntest Du natuerlich auch einfach alles selecten und dann mit mysql_num_rows() arbeiten, was aber in Hinblick auf die Performance nur dann Sinn machen duerfte wenn Du die Daten nachher auch verarbeiten willst, also nicht einfach nur die Anzahl benoetigst.
 
PHP:
$res1 = mysql_query("select count(*) from veranstaltung");
if($row = @mysql_fetch_row($res1))


Wenn es keine Veranstaltungen gibt, dann gibt die Query ein leeres Resultat zurück. Damit kann mysql_fetch_row nichts anfangen. Glaub ich :D
 
Ich glaube count(*) geht nicht, sodass Du bei count() wirklich eines der Felder der Tabelle angeben musst, was aber ergebnistechnisch keinen Unterschied macht.
In Abfragen über eine Tabelle ohne Equijoins oder ähnliches geht das noch ganz gut - Aber es läuft wirklich schneller, wenn man über eine Index-Spalte zählt (Ein Primary Key läuft im Falle des richtigen Datentyps am schnellsten). count() geht übrigens nicht und resultiert in einem Fehler.

@Themenersteller:
Wenn man nicht weiter weiß, gibt es auch in PHP ein paar nette Funktionen zum Debuggen der MySQL-Queries: [phpf]mysql_errno[/phpf] und [phpf]mysql_error[/phpf]:
PHP:
$res1 = mysql_query("select count(*) from veranstaltung;");
if (mysql_errno() > 0) {
    echo mysql_error();
    exit;
}
// und dann wie gewohnt weiter
if ($row = mysql_fetch_row($res1)) {
    // ...
}

Eine eventuelle Fehlermeldung kannst du dann gerne hier posten, damit wir es analysieren können.
 
Hallo,

um nochmal eine Klärung zu COUNT(*) bzw. COUNT(<spalte>) zu bringen:

COUNT(*) liefert die Anzahl der Ergebniszeilen zurück.

COUNT(<spalte>) liefert die Anzahl der Einträge in der Tabellenspalte <spalte> zurück, die NICHT NULL sind. Daher kann sich die Anzahl durchaus vom COUNT(*) unterscheiden!

Weiterhin ist bei MyISAM-Tabellen bei MySQL ein COUNT(*) immer sehr schnell, da die Datensatzanzahl direkt hinterlegt ist. Ein COUNT(<spalte>) hingegen kann durchaus langsam sein, je nachdem ob eine Indizierung vorliegt usw.

Markus
 
und mach lieber so das du count() und dahinter dann AS VARIABLE hängen solltest dann kannst du dieses später dann mit der VARIABLE auslesen
 
Wenn er nur die Anzahl auslesen möchte, ist mysql_fetch_row unsignifikant schneller als fetch_array, fetch_assoc oder fetch_object. Des Weiteren ist es auf folgendem Weg besser, fetch_row zu verwenden (und dazu braucht es keine as-Deklaration):
PHP:
<?php
$result = mysql_query("SELECT COUNT(*) FROM ...");
list($count) = mysql_fetch_row($result);

Ob das nun überhaupt zur Problemlösung beiträgt, bezweifel ich ;)
 
Zuletzt bearbeitet:
Zurück