Eingeschränkte Abfrage in PHP
bearbeitet vonHallo
> ~~~sql
> SELECT Titel, Datum FROM Nachrichten ORDER BY Datum DESC LIMIT 3
> ~~~
>
> Ich ergänze mal Jörgs Ausführungen ein wenig:
>
> > > 1. die mysql-funktionen sind abgekündigt. Mach das also mit pdo oder mysqli.
>
> Die mysql-Erweiterung wurde in der neusten PHP-Version 7 entfernt, nachdem sie bereits seit einiger Zeit als „veraltet“ gekennzeichnet wurde. Als Ersatz gibt es die pdo-Erweiterung und eben mysql**i** – bei letzterem reicht es meist, einfach alle _mysql_ in _mysqli_ umzuändern. Wenn ich mich nicht verguckt habe, sollte das mit deinem Code problemlos gehen.
Trotz meines +1 für deine einsteigerfreundlichen Ausführungen ein deutliches *Nein* zu „ reicht es meist, einfach alle _mysql_ in _mysqli_ umzuändern“.
Das einfache Umbenennen der Funktionsnamen von `mysql_irgendwas` in `mysqli_irgendwas` allein reicht nicht. Erstens setzen die mysqli-Funktionen bei Verwendung im prozeduralen Stil die Angabe der Verbindungskennung zwingend voraus, zweitens wird diese Kennung, im Gegensatz zu den mysql-Funktionen, als erster Funktionsparameter übergeben und drittens ist z.B. die Funktionalität von `mysql_connect` und `mysql_select_db` in einer Funktion `mysqli_connect` zusammengefallen. Es gibt zwar auch eine Funktion [`mysqli_select_db`](https://secure.php.net/manual/de/mysqli.select-db.php), die dient aber nur zur Änderung der Standarddatenbank der bestehenden Verbindung. Und dann sind da noch Funktionen, die anders arbeiten.
*Ich hoffe*, das richtig aus der PHP-Doku zusammengeklaubt zu haben. Selbst mit MySQLi gearbeitet habe ich nämlich auch noch nicht.
~~~php
<?php
$kennung = mysqli_connect("mysql.meinserver.de", "benutzername", "passwort", "meinedatenbank");
if (!$kennung) {
// nicht zustandegekommene Verbindung behandeln
// übrigens: die() ist außerhalb der Skriptentwicklung keine Fehlerbehandlung!
} else {
// Abfrage
$strSQL = "SELECT Titel, Datum FROM Nachrichten ORDER BY Datum DESC LIMIT 3";
if (mysqli_real_query($kennung, $strSQL)) {
// Gibt es ein Ergebnis?
if ($resultat = mysqli_use_result($kennung)) {
while ($row = mysqli_fetch_row($resultat)) {
// Ausgabe
echo $row['Titel'] . "<br />" . $row['Datum'] . "<br />";
}
mysqli_free_result($resultat);
} else {
// Meldung über nicht vorhandene Datensätze oder nix
}
}
}
mysqli_close($kennung);
?>
~~~
Egal, ob der hier zusammengeschusterte Code korrekt funktioniert oder nicht, er unterscheidet sich doch erheblich vom typischen Aufbau mit der alten MySQL-Bibliothek.
Tschö, Auge
--
Wir hören immer wieder, dass Regierungscomputer gehackt wurden. Ich denke, man sollte die Sicherheit seiner Daten nicht Regierungen anvertrauen.
Jan Koum, Mitgründer von WhatsApp, im [Heise.de-Interview](http://heise.de/-3074714)