Probleme bei einfacher Datenbankabfrage
Stephan
- php
Hallo alle zusammen.
Ich habe gerade mit PHP angefangen und wollte zwei Datenbankabfragen machen. Bei der ersten klappt es auch einwandfrei.
Hier der Code:
<?
$sql = 'SELECT * FROM zitate
ORDER BY id
';
$result = mysql_query($sql);
if ($result > 0){
while ($author = mysql_fetch_array($result)){
echo "<table width='490' border='0' cellpadding='0' cellspacing='0' align='center'>";
echo "<tr>";
echo "<td width='245' align='center'><a href='?p=41&auswahl=".$author[1]."'>".$author[1]."</a></td>";
echo "<td width='245' align='center'><a href='?p=41&auswahl=".$author[2]."'>".$author[2]."</a></td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan='2'> </td>";
echo "</tr>";
echo "</table>";
}
}else{
echo "Hier ist zur Zeit leider noch kein Inhalt!";
}
?>
Die Ergebnisse werde mir einwandfrei ausgegeben. Nun möchte ich im Link echo "<td width='245' align='center'><a href='?p=41&auswahl=".$author[1]."'>".$author[1]."</a></td>"; eine weiter Variable mitgeben. Die auswahl Variable.
In HTML sieht der Link dann so aus: <a href="http://www.beispiel.de/?p=41&auswahl=AbrahamLincoln">AbrahamLincoln</a>
Auf der Seite habe ich dann diesen Code zu laufen:
<?
$sql = 'SELECT * FROM zitate
WHERE author='.$auswahl;
$result = mysql_query($sql);
if ($result > 0){
echo "<strong>".$auswahl."</strong>";
while ($author = mysql_fetch_array($result)){
echo "<div align='center'>".$author[1]."</div>";
}
}else{
echo "Hier ist zur Zeit leider noch kein Inhalt!";
}
?>
Allerdings wird mir hier keine Ergebnisse angezeigt.
Ich weiß nicht, wo der Fehler liegt. Für Eure Hilfe bedanke ich mich im voraus.
Gruß Stephan
Gesünder wäre etwas wie:
$my_query = "SELECT * FROM zitate
WHERE author='".mysql_escape_string($auswahl)."'";
Überprüfe SQL-Kommandos doch am besten mit einer Software wie phpmyadmin. Der gibt dir die mysql-Fehlermeldungen aus und formatiert dir dein Query.
Fehler könnten hier sein: Das Leerzeichen zwischen und zitate
- die fehlenden ' zur Maskierung deines SELECT-Strings.
Zudem: Nutzereingaben immer mistrauen.
Hello,
$sql = 'SELECT * FROM
zitate
WHERE author='.$auswahl;
$result = mysql_query($sql);
prüfe, ob der Befehl erfolgreich ausgeführt wurde; falls nicht, prüfe mittels mysql_error, was schief gelaufen ist, siehe z.B. hier.
Und ganz zum Schluss die entscheidende Frage: Hast du eine Tabelle " zitate" oder nur eine Tabelle "zitate"?
MfG
Rouven
$sql = 'SELECT * FROM
zitate
WHERE author='.$auswahl;
Ich würde mal spontan tippen, dass es nicht $auswahl, sondern $_GET[auswahl] sein soll...
$sql = 'SELECT * FROM
zitate
WHERE author='.$auswahl;Ich würde mal spontan tippen, dass es nicht $auswahl, sondern $_GET[auswahl] sein soll...
Was soll ich sagen, so ist es. dein Tipp war richtig, und wieder habe ich hier durch die Antworten eine Menge gelernt. Ich danke euch allen vielmals.
Gruß und einen schönen Abend
Stephan
Erstmal vielen Dank für die schnellen Antworten.
Also, wenn ich das richtig verstanden habe, wird der Wert, den ich per auswahl weitergebe, nicht als Variable übernommen. Nun gut. Der Link PHP Faq hat mir zwar die Erkenntnis gebracht, das es so nicht funktioniert, aber da ich dem Englischen leider nicht mächtig bin, ich schäme mich wirklich dafür, bringt es mich nicht wirklich weiter.
Wie müsste ich denn den Wert von der Auswahl abfragen, dass er als Variable übernommen und erkannt wird?
Wie müsste ich denn den Wert von der Auswahl abfragen, dass er als Variable übernommen und erkannt wird?
Mit superglobalen Variablen im Sinne von $_GET oder $_POST - je nach Übertragungsart.
Grüße.