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
<?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.
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.
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 ;)