MySQL Profile
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
aussehen
code
dank
datenbank
datensatz
fehler
host
nachname
profil
server
spalten
syntax
tabelle
test
url
verbindung
vorname
zahl
zeile
-
Solltest du deine Datenbank bei Lima-City haben, stimmt das hier nicht:
mysql_select_db("db2045115-main", $dbserver)
Deine Datenbank kann nicht so heißen (ggf. hier kontrollieren, wie die Datenbank wirklich heißt)
Dann gehts weiter:
Heißt die Tabelle in deiner Datenbank wirklich "Name"? Oder möchtest du die Spalte "Name" anhand der Spalte "ID" anzeigen lassen?
Grundsätzlich lautet die Syntax:
SELECT spalte1, spalte2, etc... FROM tabelle WHERE spalte = ...
Also:
<?php $handle = mysql_connect('DATENBANK-HOST', 'DATENBANK-BENUTZNAME', 'DATENBANK-PASSWORT')) or die ('Fehler - Keine Verbindung möglich'); $db = mysql_select_db('DATENBANK-NAME', $handle) or die ('Fehler - Kann Datenbank nicht auswählen'); $id = mysql_real_escape_string($_GET['id']); $result = mysql_query("SELECT * FROM `TABELLE` WHERE `ID` = '".$id."'"); while ($row = mysql_fetch_object($result)) { echo $row->SPALTE1; echo $row->SPALTE2; // usw... }
Ich empfehle übrigens, Tabellen, Spalten und co. stets klein zu schreiben. Zudem gilt prinzipiell:
In einer DATENBANK werden TABELLEN gespeichert. Diese Tabellen enthalten SPALTEN, mit deren Hilfe die ZEILEN gebildet werden. Das solltest du nicht vergessen :)
---- Datenbank
-------Tabelle
---------Spalte1, Spalte2, ...
-----------------------------------
Zeile
Ist wie bei Excel:
Der Datenbankname ist der Dateiname der Excel-Datei. Die Tabelle ist das Blatt. Dieses Blatt enthält Überschriften, die wir als Spalten bezeichnen. Alles, was sich unterhalb dieser Spalten befindet, bildet die Zeile, auch Datensatz genannt.
Beitrag zuletzt geändert: 28.4.2012 0:49:18 von fabo -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
snvr1, danke, aber so gibts wieder nur den : aus :/ Aber keinen Error.
fabio, ich habe meine Datenbank auch nicht bei Lima-City, die ist bei mir viel zu langsam, meine Datenbank heisst "db2045115-main", die Tabelle "Name" und darin sind 3 Spalten, "ID", "Vorname" und "Nachname".
Bzw danke chatter, hab den Code einfach von der ersten Seite kopiert. Das erklärt mal, warum wir nen Error hatten. :D Aber es wird trotzdem noch nichts ausgegeben. :/
Beitrag zuletzt geändert: 28.4.2012 12:49:53 von rate -
Dann hätten wir das geklärt :D
<?php $handle = mysql_connect('DATENBANK-HOST', 'DATENBANK-BENUTZNAME', 'DATENBANK-PASSWORT')) or die ('Fehler - Keine Verbindung möglich'); $db = mysql_select_db('db2045115-main', $handle) or die ('Fehler - Kann Datenbank nicht auswählen'); $id = mysql_real_escape_string($_GET['id']); $result = mysql_query("SELECT * FROM `Name` WHERE `ID` = '".$id."'"); while ($row = mysql_fetch_object($result)) { echo $row->Vorname.' '.$row->Nachname; }
Beitrag zuletzt geändert: 28.4.2012 14:10:42 von fabo -
Jetzt keine Errors, aber keine Ausgabe.
-
<?php $handle = mysql_connect('DATENBANK-HOST', 'DATENBANK-BENUTZNAME', 'DATENBANK-PASSWORT')) or die ('Fehler - Keine Verbindung möglich'); $db = mysql_select_db('db2045115-main', $handle) or die ('Fehler - Kann Datenbank nicht auswählen'); $id = mysql_real_escape_string($_GET['id']); $result = mysql_query("SELECT * FROM `Name` WHERE `ID` = '".$id."'"); while ($row = mysql_fetch_object($result)) { die(var_dump($row)); }
-
fabo schrieb:
<?php $handle = mysql_connect('DATENBANK-HOST', 'DATENBANK-BENUTZNAME', 'DATENBANK-PASSWORT')) or die ('Fehler - Keine Verbindung möglich'); $db = mysql_select_db('db2045115-main', $handle) or die ('Fehler - Kann Datenbank nicht auswählen'); $id = mysql_real_escape_string($_GET['id']); $result = mysql_query("SELECT * FROM `Name` WHERE `ID` = '".$id."'"); while ($row = mysql_fetch_object($result)) { die(var_dump($row)); }
Error in Zeile 28:
while ($row = mysql_fetch_object($result))
-
Was für einen Fehler?
-
$result = mysql_query("SELECT * FROM `Name` WHERE `ID` = '".$id."'");
heisst die Tabelle wirklich Name? und du kannst die verkettung weglassen. Also statt
nur noch'".$id."'"
'$id'"
Gruss snvr1
Beitrag zuletzt geändert: 28.4.2012 21:58:33 von snvr1 -
snvr1 schrieb:
$result = mysql_query("SELECT * FROM `Name` WHERE `ID` = '".$id."'");
heisst die Tabelle wirklich Name? und du kannst die verkettung weglassen. Also statt
nur noch'".$id."'"
'$id'"
Gruss snvr1
Ja sie heisst Name. -
Mal was anderes... Hast du phpMyAdmin-Zugriff? Falls ja, führe die Abfrage mal manuell aus:
SELECT * FROM `Name` WHERE `ID` = 1
Was passiert dann? Mal davon abgesehen - Handelt es sich bei dem Feld "ID" um ein Integer-Feld? -
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELCT * FROM `Name` WHERE `ID` = ''' at line 1
Der Fehler mit "SELCT" hat sich ja bereits erledigt aber außerdem lässt sich hieraus noch entnehmen, dass für $id nur ein leerer String eingesetzt wird. Dies deutet darauf hin, dass der Fehler genau dort zu suchen ist. Vermutlich liefert die Anfrage einfach 0 Ergebnisse, da ja kein Datensatz existiert, bei dem die ID = "" ist. Daher würde ich davon ausgehen, dass die URL ohne den richtigen Get-Parameter aufgerufen wurde, kann das sein? :)
Die korrekte Variante wurde von snvr bereits gepostet: abc.com/profil.php?id=1
Falls dies nicht der Fall sein sollte, empfehle ich dir die folgende Vorgehensweise:
Lass dir mal nach jeder Anweisung die geänderten Variablen ausgeben und prüfe, ob alle genau so sind, wie erwartet. -
vexi schrieb:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELCT * FROM `Name` WHERE `ID` = ''' at line 1
Der Fehler mit "SELCT" hat sich ja bereits erledigt aber außerdem lässt sich hieraus noch entnehmen, dass für $id nur ein leerer String eingesetzt wird. Dies deutet darauf hin, dass der Fehler genau dort zu suchen ist. Vermutlich liefert die Anfrage einfach 0 Ergebnisse, da ja kein Datensatz existiert, bei dem die ID = "" ist. Daher würde ich davon ausgehen, dass die URL ohne den richtigen Get-Parameter aufgerufen wurde, kann das sein? :)
Die korrekte Variante wurde von snvr bereits gepostet: abc.com/profil.php?id=1
Falls dies nicht der Fall sein sollte, empfehle ich dir die folgende Vorgehensweise:
Lass dir mal nach jeder Anweisung die geänderten Variablen ausgeben und prüfe, ob alle genau so sind, wie erwartet.
Danke, aber ich habs schon mit dem richtigen Link gemacht, ich konnt mich beim erstellen nur nicht mehr erinnern wies dann aussieht, und hab einfach ein Beispiel gemacht.
Wenn ich einfach 1 als ID eintrage, gibt es wieder hier einen Error:
while ($row = mysql_fetch_object($result))
Beitrag zuletzt geändert: 29.4.2012 19:14:50 von rate -
while ($row = mysql_fetch_object($result))
Was für ein Fehler kommt dort ist es ein Mysql oder PHP fehler, und poste mal die Fehlermeldung. -
Hast du den Query mal manuell via phpMyAdmin ausgeführt?
-
vexi schrieb:
... dass für $id nur ein leerer String eingesetzt wird. .
ich denke auch, das der GET-Wert nicht (richtig) übergeben wurde, die Variable $id scheint leer zu sein
versuch mal im Test-Script die Liste aller User auszugeben, mit Link zum klicken
ich empfehle mysql_fetch_assoc anstatt mysql_fetch_row,
dann ist das Array (in 2ter Ebene) mit Key-Namen, nicht Key-Zahlen
... alternativ geht auch mysql_fetch_object()
dann hast Du halt die 2te Ebene als Objekte anstatt als Array
test.php
<?php // ------------------------------------------------------ // --------------- config -------------------- $db_host = 'mysql.lima-city.de'; // ---- MySQL Server/Host $db_user = 'USERxxxxxx'; // ---- MySQL Username $db_pass = 'YyYyYyYy'; // ---- MySQL User Passwort $db_name = 'db_xxxxxx_1'; // ---- MySQL Datenbank Name $db_table = 'my_user'; // ---- MySQL Tabelle // ------------------------------------------------------ // --------------- connect ------------------- $con = mysql_connect($db_host, $db_user, $db_pass)); if (!$con) { die ('Fehler ... MySQL Verbindung <br />' . mysql_error()); exit; } $sel = mysql_select_db($db_name, $con); if (!$sel) { die ('Fehler ... Datenbank Auswahl <br />' . mysql_error()); exit; } // ------------------------------------------------------ // --------------- User Details -------------- if (!empty($_GET['id'])) { $run_id = trim(chop($_GET['id'])); // --- Optional --- ## $run_id = preg_replace('/[^0-9]/','',$run_id); // ---- Nur Zahlen (Zeichen 0 bis 9) zulassen $run_id = mysql_real_escape_string($run_id); // ---- string fuer mysql escapen // -------------------------- $sql_user = "SELECT * FROM ".$db_table." WHERE ID = '".$run_id."'"); $res_user = mysql_query($sql_user); if (!$res_user) { die ('Fehler ... res_user <br />' . mysql_error()); exit; } $user_data = array(); while ($row_user = mysql_fetch_assoc($res_user)) { $user_data[] = $row_user; } // -------------------------- echo "<h2>User Details</h2>\n"; if (!empty($user_data)) { // -------- Hier werden Alle Spalten der Tabelle zum User ausgegeben ------- // -------- um damit zu arbeiten anstatt print_r als foreach-Schleife ------- print "<pre>\n"; print_r($user_data); print "</pre>\n"; } else { echo "<br /> ... Keine Daten zur ID ".$run_id." gefunden. \n"; } // ------------------------------------------- // ------------------------------------------- } else { // ------------------------------------------------------ // --------------- User Auswahl -------------- echo "<br />\n"; echo "<br />Bitte einen User aus der Liste auswählen.\n"; echo "<br />\n"; $sql_liste = "SELECT * FROM ".$db_table.""); $res_liste = mysql_query($sql_liste); if (!$res_liste) { die ('Fehler ... res_liste <br />' . mysql_error()); exit; } $liste_data = array(); while ($row_liste = mysql_fetch_assoc($res_liste)) { $liste_data[] = $row_liste; } // -------------------------- echo "<h2>User Auswahl</h2>\n"; if (!empty($liste_data)) { echo "<ul>\n"; $n=1; foreach($liste_data as $item) { echo "<li> Nr: ".$n." <a href=\"test.php?id=".$row_liste['ID']."\">".$row_liste['Vorname']." ".$row_liste['Nachname']."</a> (User-ID: ".$row_liste['ID'].") </li>\n"; $n++; } echo "</ul>\n"; } else { echo "<br />... Keine User-Daten gefunden. \n"; } echo "<br />\n"; echo "<br />\n"; // ------------------------------------------- // ------------------------------------------- } echo "<br />\n"; echo "<br /> <a href=\"test.php\">TEST HOME</a> \n"; echo "<br />\n"; // ------------------------------------------------------ ?>
Du musst halt Dattenbank-Zugangsdaten und Tabellen-Name anpasen
und wenn Du diesen Code in andere Datei ausser "test.php" ausführen willst,
dann musst Du die Links anpassen (überall wo test.php steht) ... logisch :)
und wie schon gesagt wurde, bei Spalten-Namen auch auf groß-/klein- Schreibung achten
Beitrag zuletzt geändert: 30.4.2012 9:29:10 von oindex -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage