2011-01-07 4 views
2

Ich bin ziemlich neu in PHP und MySQL (mit anderen Sprachen erfahren). Grundsätzlich möchte ich Daten aus einer Zeile relativ zu ihrer in der URL angegebenen ID laden. Beispiel laden die 3. Reihe, wenn „index.php id = 3?“Laden Zeile von MySQL je nach PHP? ID = *

Heres, was ich habe es geschafft, so weit zu tun: http://pastie.org/1436865

ich ziemlich sicher, dass diese Frage millionenfach gefragt wurde, aber ich weiß nicht, was Begriff weit zu suchen und nicht in der Lage gewesen, alles so weit zu finden: S

Danke Jungs

+0

+1 für eine klare Frage mit einem Link zu Code. Ich habe momentan keine Zeit, alles zu beantworten, aber ich sage dir, dass du die ID aus deiner Querystring mit $ id = (int) $ _GET ['id']; 'bekommen kannst. Viel Glück! –

+0

Gentleman und ein Gelehrter Sie sind Herr :) Das hat es geschafft! – DexCurl

Antwort

0

Der einfachste Weg

$id = (int) $_GET['id'];; 
$result = mysql_query("SELECT * FROM tablename WHERE id=".$id); 
while($res = mysql_fetch_object($result)){ 
    echo $res->columnname; 
} 

ist Natürlich sollten Sie die Eingabeparameter usw. überprüfen. Dies ist nur ein Ansatz.

+0

können Sie auch Dokumentation zu mysql Funktionen auf php.net lesen. Zum Beispiel, mysql_fetch_object Seite können Sie hier finden - http://php.net/manual/en/function.mysql-fetch-object.php – Igor

+0

ODER zusätzlich können Sie 'SELECT * FROM likes OFFSET" verwenden.$ _GET ['id'] 'LIMIT 1? da er die dritte Reihe spielt, wissen wir nicht, ob er IDs in seinem Tisch aufbewahrt. –

+0

es scheint, während ist hier unnötig –

1

Der Teil id=3... wird Query-String genannt und Sie können es die $_GET Array zuzugreifen (siehe PHP: Predefined Variables).

BTW: Es macht keinen Sinn, die dritte Zeile aus einer Datenbanktabelle zu laden, weil die Zeilen in der Datenbanktabelle keine Reihenfolge haben (also anstelle einer Liste von Zeilen ist eine Menge von Datensätzen geeigneter Analogie in diesem Fall). Datensätze werden normalerweise durch einen sogenannten Primärschlüssel identifiziert und Sie müssen selbst sicherstellen, dass Ihre Datenbanktabellen einen Primärschlüssel haben.

1

Oder wenn Sie Arrays anstelle von Objekten versuchen, etwas wie folgt aus:

$query="SELECT * FROM table WHERE id=".(int)$_GET['id']." LIMIT 1"; 
$result=mysql_query($query); 

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    echo $row['column']; 
} 

oder wenn Sie so wollen indizierten Spalten

while ($row = mysql_fetch_array($result, MYSQL_NUM)) { 
    echo $row[0]; 
} 

oder beide (Spaltennamen und Indizes):

while ($row = mysql_fetch_array($result, MYSQL_BOTH)) { 
    echo $row[0].'-'.$row['column']; 
} 

Sie können dies sogar verwenden, wenn Sie nur eine Zeile benötigen:

$result = mysql_query("SELECT * FROM table WHERE id=".(int)$_GET['id']); 
$row = mysql_fetch_row($result); 
echo $row[0]; 
+0

warum all das während? –

1

Basierend auf all diesen nicht so klar, aber die Arbeitsbeispiele und Sie können machen Funktion:

function getRow($query){ 
    $res = mysql_query($query); 
    if (!$res) { 
    trigger_error(mysql_error." in ".$query); 
    return array(); 
    } 
    $row = mysql_fetch_assoc($res)); 
    if ($row) return $row; 
    return array(); 
} 

dann speichern Sie es in eine Bibliotheksdatei, schließen Sie diese Datei in das Skript und Anruf mit nur einer einzigen Leitung

$data = getRow("SELECT * FROM tablename WHERE id=".intval($_GET['id'])); 

Beachten Sie auch Oswalds Hinweis, es ist sehr wichtig. Sie können nicht und sollten sich nicht auf die relative Position der Reihe verlassen, da es überhaupt keine Position gibt. Eine DB-Tabelle ist ein Heap, keine geordnete Liste. Verwenden Sie bestimmte eindeutige Feldwerte, um bestimmte Zeilen zu adressieren. Das ist der Weg