Vinzenz: Datenbank so auslesen, ist das falsch?

Beitrag lesen

Hallo,

Ich möchte die Einträge letzten 4 Einträge eines Benutzer auslesen, diese sind in den Tabellen comment und gallery_commtens gespeichert. Es wird die Variable $user übergeben, welche gleich ist mit der in den Tabellen (userid). Ich möchte die Variable $comment, welche auch als Spalte in den beiden Tabelle vorhanden ist.

Steht in den beiden Spalten 'comment' in beiden Tabellen das Gleiche? Falls ja, ist eine überflüssig. Denn die beiden Tabellen sind doch wohl über die userid verknüpft? Besser postest Du die Struktur Deiner beiden Tabellen und die logische Verknüpfung der beiden.

Wo ist der Fehler??

Welche Fehlermeldungen kommen denn?

Leider läßt sich der OP keine Fehlermeldungen von MySQL anzeigen, das ist der gröbste Fehler.

$link = mysql_connect("localhost", "benutzer", "passwort");

Das kann fehlschlagen, deswegen besser wie das erste Beispiel zu mysql_connect() im PHP-Handbuch.

mysql_select_db("datenbank", $link);

diesmal wird bei mysql_select_db angenommen, dass diese Anweisung nie fehlschlägt.

$result = mysql_query("SELECT * FROM gallery_comments, comment WHERE $user=comment.userid AND $user=gallery_comments.userid ORDER by datum DESC LIMIT 0,3", $link);

Liebe(r) Dadsche: Hier solltest Du grundsätzlich ansetzen und Dir folgendes angewöhnen:

// Zuweisung des SQL-Statements an eine Variable
// Nur die Daten abfragen, mit denen Du arbeiten willst
$strSQL = <<<EOS
    SELECT gc.comment, c.comment
    FROM gallery_comments gc, comment c
    WHERE c.userid = $user AND gc.userid = $user
    ORDER BY datum DESC LIMIT 0,3
EOS;

// Beachte bitte, dass die Syntax der WHERE-Klausel
//     Spalte = Wert und nicht
//     Wert = Spalte
// lautet (stark vereinfacht)

// Zur Debugzeit macht sich hier ein
echo $strSQL;
// immer gut. Läßt sich gut auskommentieren.

// SQL-Statement ausführen lassen
$result = mysql_query($strSQL, $link);
// Überprüfen, ob das Statement erfolgreich ausgeführt werden konnte
if (!$result) {
    // Falls nicht, SQL-Statement und MySQL-Fehlermeldung ausgeben
    // Skript beenden
    die('SQL-Anweisung:' . "\n" . $strSQL . "\n" .
        'MySQL-Fehlermeldung:' . "\n" . mysql_error() . "\n");
}

// schau Dir dazu ebenfalls (die nicht immer vorbildlichen)
// Beispiele und Kommentare im PHP-Handbuch an
// mysql_query()

while($data=mysql_fetch_array($result))
{
$comment = $data['comment'];

Das schlägt auch fehl, da die Spalte 'comment' zweimal vorkommt, siehe dazu
mysql_fetch_array()

// Falls Du beide wirklich benötigst:
$comment = $data[0] . ' ' . $data[1];

echo"$comment";
}

Probier mal den Query von Hand an die Datenbank zu senden. Wenn dir das auch nicht weiterhilft, aktivier mal Query-Logging und sieh nach, ob das PHP-Script den Query vielleicht falsch zusammenbaut.

Ich würde in umgekehrter Reihenfolge vorgehen und mir _immer_ das SQL-Statement ausgeben lassen, bis es läuft :-)

Freundliche Grüsse,

Vinzenz