Wie kann ich mit PHP am besten einen einzelnen Datensatz aus einer MySQL-Datenbank auslesen? Z.B.:
SELECT id FROM games
Ich habe versucht, eine Antwort in den alten Fragen zu finden, hatte aber kein Glück.
Wie kann ich mit PHP am besten einen einzelnen Datensatz aus einer MySQL-Datenbank auslesen? Z.B.:
SELECT id FROM games
Ich habe versucht, eine Antwort in den alten Fragen zu finden, hatte aber kein Glück.
$link = mysql_connect('localhost','root','yourPassword')
mysql_select_db('database_name', $link);
$sql = 'SELECT id FROM games LIMIT 1';
$result = mysql_query($sql, $link) or die(mysql_error());
$row = mysql_fetch_assoc($result);
print_r($row);
In ChrisADs Antwort fehlten einige Dinge. Nach der Verbindung zu mysql ist es wichtig, die Datenbank auszuwählen und auch die()
Anweisung können Sie Fehler erkennen, wenn sie auftreten.
Seien Sie vorsichtig, es funktioniert nur, wenn Sie 1 Datensatz in der Datenbank haben, weil Sie sonst hinzufügen müssen WHERE id=xx
oder etwas Ähnliches zu erhalten nur eine Zeile und nicht mehr. Sie können auch auf Ihre ID zugreifen wie $row['id']
Verwendung von PDO könnte man etwa so vorgehen:
$db = new PDO('mysql:host=hostname;dbname=dbname', 'username', 'password');
$stmt = $db->query('select id from games where ...');
$id = $stmt->fetchColumn(0);
if ($id !== false) {
echo $id;
}
Sie sollten natürlich auch prüfen, ob PDO::query()
führt die Abfrage OK aus (entweder durch Überprüfung des Ergebnisses oder durch Anweisung an PDO, stattdessen Ausnahmen zu werfen)
Unter der Annahme, dass Sie einen automatisch inkrementierenden Primärschlüssel verwenden, was die normale Vorgehensweise ist, können Sie auf den Schlüsselwert der letzten Zeile zugreifen, die Sie in die Datenbank eingegeben haben:
$userID = mysqli_insert_id($link);
Andernfalls müssen Sie genauere Angaben zu der gesuchten Zeile machen, z. B. die E-Mail-Adresse. Ohne Ihre Tabellenstruktur zu kennen, können wir keine genaueren Angaben machen.
In jedem Fall sollten Sie Ihre SELECT
Abfrage, verwenden Sie eine WHERE
Anweisung wie diese: (Allgemeines Beispiel)
$getID = mysqli_fetch_assoc(mysqli_query($link, "SELECT userID FROM users WHERE something = 'unique'"));
$userID = $getID['userID'];
(Konkretes Beispiel) Oder ein konkreteres Beispiel:
$getID = mysqli_fetch_assoc(mysqli_query($link, "SELECT userID FROM users WHERE userID = 1"));
$userID = $getID['userID'];
Warnung! Ihr SQL ist keine gute Idee, denn es wählt alle Zeilen aus (keine WHERE-Klausel setzt "WHERE 1" voraus!) und verstopft Ihre Anwendung, wenn Sie eine große Anzahl von Zeilen haben. (Wozu 1.000 Zeilen auswählen, wenn 1 genügt?) Wenn Sie also nur eine Zeile auswählen, müssen Sie die LIMIT-Klausel angeben:
$sql = "SELECT id FROM games LIMIT 1"; // Select ONLY one, instead of all
$result = $db->query($sql);
$row = $result->fetch_assoc();
echo 'Game ID: '.$row['id'];
Dieser Unterschied erfordert, dass MySQL die nur der erste übereinstimmende Datensatz, daher ist es wichtig, die Tabelle zu ordnen, oder Sie sollten eine WHERE-Klausel verwenden. Es braucht jedoch viel weniger Speicherplatz und Zeit, diesen einen Datensatz zu finden, als jeden Datensatz abzurufen und Zeile Nummer eins auszugeben.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
6 Stimmen
"SELECT id FROM games" gibt zurück todo Aufzeichnungen. Wenn Sie alle möglichen Werte aus einem Feld (id) haben wollen, sind die folgenden Antworten richtig. Wenn Sie nur eine Zeile benötigen, müssen Sie eine WHERE-Klausel zu Ihrer SQL-Anweisung hinzufügen.