Ich bin auf der Suche nach der Sicherheit des Datenbankzugriffs auf einer Website zu verbessern, und der allgemeine Konsens scheint, vorbereitete Aussagen zu verwenden. Ich habe eine Vorstellung davon, wie sie funktionieren, aber ich möchte ihre Verwendung verallgemeinern, so dass die einzigen Dinge, die ich liefern muss, eine Abfrage, die Parametertypen und Werte sind. Dafür habe ich jedoch keine besonders guten Ressourcen gefunden und bin daher irgendwie verloren, wie ich das angehen soll.Vorbereitete Anweisungen mit mehreren Werten
Grundsätzlich was ich will ist wie folgt.
$query = "SELECT * FROM Table WHERE Column1 = ? AND Column2 = ?";
$array[0] = "string";
$array[1] = 5;
$parameters = "si";
$dbHandler = new mysqli("server", "user", "password", "database");
$stmt = $dbHandler->prepare($query);
$stmt->bind_param($parameters, $array);
$stmt->execute();
//Process results
Ich bin mir bewusst, dass dies nicht die richtige Prozedur ist, aber das ist das Problem. Was kann ich tun, damit dies funktioniert? Die Idee ist, dass sich die Anzahl der Variablen innerhalb von $array
ändern kann, ebenso wie die Parameterliste.
Es ist mir nicht klar, was Sie erreichen möchten. Sie sagen, die einzigen Dinge, die Sie liefern möchten, sind "eine Abfrage, die Parametertypen und Werte" - genauso funktionieren vorbereitete Anweisungen in allen Fällen überall. – VoteyDisciple
Der Array-Teil ist, was ich nicht weiß. Die Standard-Verwendung von vorbereiteten Anweisungen besteht darin, die Werte wie 'bind_param (" sss ", $ s1, $ s2, $ s3);' aufzulisten, aber ich möchte ein Array anstelle der drei String-Variablen verwenden. – user3521737
Tut mir leid, ich habe verpasst, dass Sie das in 'mysqli' machen - ich dachte, es wäre PDO, das von Anfang an nur mit Arrays funktioniert. (Wenn Sie nur wechseln und die Syntax zählt, "PDO verwenden" kann eine praktikable Option sein hier.) – VoteyDisciple