Kommentarfunktion MySQL funktioniert nicht?
Liebes Forum.
Nachdem ich lange herumprobiert habe, habe ich es endlich geschafft, einen eingegebenen Kommentar in meiner MySQL-Datenbank abzuspeichern. Das heißt, meine Besucher können jetzt ihren Namen und zugehörigen Kommentar eingeben. Dieser wird erst eingespeichert und beim erneuten Aufruf der Seite sollen alle bisherigen Kommentare angezeigt werden.
Nur leider klappt das nicht so ganz, wie ich mir das vorstelle. Ich kriege es irgendwie nicht hin, alle Kommentare auszulesen, sondern lese immer nur die letzte Reihe meiner Tabelle aus.
Ich habe also im Internet gesucht und eine Lösungsmöglichkeit mit einer while- Schleife gefunden. Problem ist: Die klappt nicht!
Ich stelle euch meine Version einmal hier rein:
<?php
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
$_sql = "SELECT * FROM MatheKommentare ORDER BY ID";
$_res = mysql_query($_sql, $link);
while ($row = mysql_fetch_array($_res, MYSQL_ASSOC)) {
echo "<div>";
echo "Kommentar Nummer: " . $row["id"];
echo " von " . $row["name"];
echo "Text: ". str_replace("\n", $row["text"]);
echo "</div>";
}
?>
Was habe ich falsch gemacht?
Danke im Voraus!
5 Antworten
Such mal nach mysqli Query... der ganze mysql_query Kram ist veraltet. Oder befass dich am besten sofort mit pdo
$pdo =('mysql:host=localhost;dbname=id12940621_database', 'id12940621_user', 'Password');
$sql = "SELECT * FROM MatheKommentare";
foreach ($pdo->query($sql) as $row) {
echo $row['ID']."<br />";
echo $row['name']."<br />";
echo $row['text']."<br /><br />";
}
Wieso wird mir jetzt bei mir für Zeile eins angezeigt: Syntax Error, unexpectet ','?
Musst dir halt alles genau anschauen... angeblich hast du irgendwo ein Komma, wo keins hingehört
Mach mal ein Screenshot oder ist der Code komplett 1:1 wie in der php Datei ?
$pdo =('mysql:host=localhost;dbname=database','user', 'Password');
$sql = "SELECT * FROM MatheKommentare";
foreach ($pdo->query($sql) as $row) {
echo $row['ID']."<br />";
echo $row['name']."<br />";
echo $row['text']."<br /><br />";
}
Bis auf Die Zugangs daten (die keine Kommas beinhalten) eigentlich 1:1 habs extra nochmal kopiert. Ich schreibe grad vom Raspberry Pi aus und kann leider keinen Screenshot machen
Ach jetzt seh ich einen Fehler... da fehlt new pdo vor deinem DSN
<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
?>
Super Danke! Manchmal seh ich die einfachsten dinge nich
Ach kommt bei den besten Entwicklern vor... bei Syntax error, sag ich immer „Sonntags Fehler“ :)
Was habe ich falschgemacht?
Du verwendest mysql_query - das gibt's seit PHP 7 aber nicht mehr.
Alex
Danke ich werde mal kucken
Dann kuck auch gleich nach mysql_fetch_array - das gibt's nämlich auch nicht mehr.
Zuerst einmal: Nutze nur mysqli-Funktionen, statt mysql. Letzere sind veraltet und sollten nicht mehr angewandt werden.
An dieser Stelle:
$_res = mysql_query($_sql, $link);
würde ich zudem das Ergebnis erst auf seinen Typ prüfen.
$result = mysqli_query($link, $sql);
if ($result) {
// read further ...
}
else {
// there was an error ...
}
Schreibe das also erst einmal alles um und schau danach noch einmal.
Wie schon gesagt wird mysql eigentlich seit PHP 5.5 nicht mehr verwendet und wurde in PHP 7 entfernt. Einerseits könntest du es mit Pod machen, ich persönlich benutze aber lieber mysqli. Der richtige Code würde wie folg aussehen. Wenn du noch Fragen zum Code hast, kannst du diese gern stellen.
<?php
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
$_sql = "SELECT * FROM MatheKommentare ORDER BY ID";
$_res = mysqli_query($link, $_sql);
while ($row = mysqli_fetch_assoc($_res)) {
echo "<div>";
echo "Kommentar Nummer: " . $row["id"];
echo " von " . $row["name"];
echo "Text: ". str_replace("\n", $row["text"]);
echo "</div>";
}
?>
Zeigt immer dieselbe Zeile an, die erste, oder?
Die neuste soz. Und seit ich das, was oben steht eingegeben habe garnix mehr
Danke, dann Mach ichs am besten mit pdo, hab grad nachgeschaut