MySQL(i) Umstellung - Wie funktionierts?
Hallo zusammen,
ich bin aktuell noch recht frisch in dem Thema "MySQL".
Ich hatte bis vor Kurzem die alte PHP-Version 5.2, welche nun auf 7.2 geändert wurde. Aufgrund der Umstellung sind sämtliche Skripte nicht mehr 100% funktionsfähig.
Wie schreibe ich am besten ein Datenbankskript um, damit ich meine Datenbank nach einem bestimmten Begriff durchsuchen kann?
Aktuell habe ich noch folgenden Code:
<?php
//* Datenbankverbindung aufbauen (START)
$verbindung = mysql_connect("SERVERADRESSE", "DATENBANKUSER", "DATENBANKPASSWORT") or die ("Keine Verbindung möglich. Benutzername oder Passwort sind falsch");
mysql_select_db("DATENBANKNAME") or die ("Die Datenbank existiert nicht.");
//* Datenbankverbindung aufbauen (ENDE)
$vorname = $_GET['vorname'];
echo "<h2></h2><br />";
//* Überprüfung der Eingabe
$abfrage = "SELECT * FROM datenstamm WHERE vorname LIKE '%$vorname%'";
$ergebnis = mysql_query($abfrage) or die(mysql_error());
while ($ausgabe = mysql_fetch_assoc($ergebnis)) {
echo "Vorname " . $ausgabe['vorname'] . "<br>Nachname:</u><br> " . $ausgabe['nachname'] . " ";
}
//* Wenn etwas gefunden wurde, wird es hier ausgegeben.
// * Wenn nichts gefunden wurde, dann kommt diese Fehlermeldung.
?>
Ich habe etwas von einer Änderung auf MySQLi gehört, komme aber leider nicht weiter.
Für jede Hilfe bei der Umänderung bin ich dankbar. 😉
3 Antworten
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
<?php
$verbindung = new mysqli('localhost', 'Benutzer root', 'Passwort', 'DATENBANKNAME');
$vorname = $_GET['vorname'];
echo "<h2></h2><br />";
$abfrage = "SELECT * FROM datenstamm WHERE vorname LIKE '%$vorname%'";
$ergebnis = mysqli_query($verbindung, $abfrage) or die(mysqli_error());
while($ausgabe = mysqli_fetch_assoc($ergebnis))
{
echo "Vorname " .$ausgabe['vorname']."<br>Nachname:</u><br> " .$ausgabe['nachname']." ";
}
?>
Sollte jetzt funktionieren.
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/user/freejack75/1444745362_nmmslarge.jpg?v=1444745362000)
dieses WHERE vorname LIKE $vorname hat einen Fachbegriff, nennt sich sql injection. Ist die Top 1 Lücke in schrottigem Code.
Den Code solltest du komplett neu schreiben, ordentlich mit PDO und richtigem Parameter Binding.
Dazu gibt es gefühlt 5000 Tutorials.
![](https://images.gutefrage.net/media/user/RakonDark/1552185525294_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1552185525000)
das meiste ist einfach nur mysql mit mysqli tauschen ,
aber was ganz entscheidend , jetzt hast du ein soganten handle mit dem du weiter arbeitest , dieser handle ist die verbindung zum connect mit der datenbank
sprich bei allen folge befehlen muss jetzt dieser handle als paramater mit gegeben werden , damit die funktion weiss , welche connection benutzt werden soll .
wirste wohl zeile für zeile durcharbeiten müssen .
Das hat mir sehr geholfen - danke für dein Mühe ;)