Markus Heckelmann: Datenbankabfrage klappt nicht

hallo!

ich beschäftige mich zur zeit ein bisschen mit php3 und mysql.
ich habe eine datenbank erstellt und möchte diese jetzt abfragen.
dazu habe ich folgenden text in eine .php3-datei geschrieben:

<html>
<?
$verbindung = @mysql_connect("localhost","nobody","");

if (!$verbindung) {
  echo "Keine Verbindung möglich!\n";
  exit; }

$abfrage = "SELECT art FROM heckelmann";

$erg = mysql_db_query("heckelmann.sql",$abfrage,$verbindung);

$erg = mysql_fetch_row($erg);    (KOMMENTAR: das müßte zeile 13 sein, wenn ich richtig gezählt habe *g*)

mysql_close($verbindung);

?>
</html>

als fehlermeldung wir im browser angezeigt:

Warning: 0 is not a MySQL result index in c:\apache\htdocs\data.php3 on line 13

den text der php-datei habe ich aber sinngemäß (änderung der variablen) aus einem php-tutorial übernommen.
auch in anderen steht ähnliches.

was ist in der .php3-datei falsch oder stimmt was mit der .sql-datei (erstellt mit phpmyadmin) nicht?

  1. Nachtrag (hab versehentlich auf absenden geklickt):

    vielen dank für eure hilfe.

    markus

  2. <?
    $verbindung = @mysql_connect("localhost","nobody","");

    if (!$verbindung) {
      echo "Keine Verbindung möglich!\n";
      exit; }

    Dir ist schon klar das du mit @ keine fehlermeldung bekommst oder? kann mir vorstellen das die verbindung zum server gar nicht zustande kommt. (default user ist root ohne passwort)

    vereinfachen wir das ganze mal etwas:
    mysql_connect("localhost","nobody","") or die(mysql_error());

    $abfrage = "SELECT art FROM heckelmann";

    $erg = mysql_db_query("heckelmann.sql",$abfrage,$verbindung);

    warum gibst du da .sql an?
    du würdest es dir einfacher machen wenn du gleich eine standard DB definierst. (normalerweisse hast ja nur eine oder?)

    mysql_select_db("heckelmann") or die("FEHLER: Es kann nicht auf die Datenbank "heckelmann" zugegriffen werden!");

    $query="SELECT art FROM heckelmann"; # Heist die tabelle wirklich heckelmann?
    $result=mysql_query($query);

    $erg = mysql_fetch_row($erg);    (KOMMENTAR: das müßte zeile 13 sein, wenn ich richtig gezählt habe *g*)

    um mal zu sehen ob das ganze funktioniert versuch mal das hier:

    while(list($art)=mysql_fetch_row($result)){
       echo "<br>$art\n";
    }

    mysql_close($verbindung);

    ?>
    </html>

    Warning: 0 is not a MySQL result index in c:\apache\htdocs\data.php3 on line 13

    Die fehlermeldung heißt normalerweisse das NICHTS zurückgegeben wurde, das kann einerseits heißen das nichts gefunden wurde, oder das der query falsch war.

    lg
    Ludwig

  3. hallo!

    tach

    ich beschäftige mich zur zeit ein bisschen mit php3 und mysql.
    ich habe eine datenbank erstellt und möchte diese jetzt abfragen.
    dazu habe ich folgenden text in eine .php3-datei geschrieben:

    <html>
    <?
    $verbindung = @mysql_connect("localhost","nobody","");
    mysql_close($verbindung);

    ?>
    </html>

    ziemlich umständlich das ganze :)
    also, ich setze nun voraus, dass deine DB heckelmann heisst, und in dieser DB eine tabelle namens heckelmann existiert, dann wäre eine einfachere lösung die folgende :

    <html>
    <?php

    //default user/pw für mysql ist root/[nix] deswegen kann man hier den dritten parameter weglassen

    $verbindung = @mysql_connect('localhost', 'root');
    if (!$verbindung) {
    echo "Keine Verbindung möglich!\n";
    exit; }

    $abfrage = "SELECT art FROM heckelmann;";
    $tabelle = "heckelmann";

    $result = mysql_query($tabelle,$abfrage);

    while($row = mysql_fetch_array($result)) {
      echo $row["art"]<br>\n;
    }
    mysql_free_result($result);

    ?>
    </html>

    mysql_close($verbindung); ist nicht unbedingt notwendig, weil die verbindung meines wissen eh automatisch geschlossen , es sei denn du machst ein permanent connect...

    als fehlermeldung wir im browser angezeigt:

    Warning: 0 is not a MySQL result index in c:\apache\htdocs\data.php3 on line 13

    sieht aus als gäbe es schlichtweg keine tabelle namens heckelmann in der heckelmann-DB oder das feld art war entweder leer oder nicht vorhanden

    gruss
    Igor