Ich machte ein einfaches Beispiel in PHP, das Ziel ist einfach die Werte des Arrays in die Datenbank einfügen. Die Feldnamen sind die Array-Schlüssel und die Feldwerte sind die Array-Werte. Ich wählte objektorientierten Stil für Abfragen, weil ich OOP übe. Als ich es geloopt habe, war das Problem: Der Code akzeptiert nur den ersten Index des Arrays, das ist der "Name"; Es soll die vier Werte akzeptieren, da die Tabelle aus vier Feldern besteht (Name, E-Mail, Benutzername, Passwort). Jetzt ist das Ergebnis in der Datenbank nur das Feld name hat Wert, der Rest der Felder sind null. Hier ist der Code:Foreach-Schleife akzeptiert nur den ersten Index des Arrays
<?php
class User {
public static function insert($table, $table_fields = array()) {
if(count($table_fields)) {
foreach($table_fields as $field_name => $field_value) {
return "INSERT INTO $table ($field_name) VALUES ('$field_value')";
}
}
return false;
}
}
$connect = mysqli_connect('localhost', 'root', '', 'sample');
mysqli_query($connect, User::insert('users', array(
'name' => 'Sample Name',
'email' => '[email protected]',
'username' => 'sampleusername',
'password' => '12345'
)));
?>
Ich möchte wissen, was mit meinem Code falsch ist, und es würde mir viel mehr Dankbarkeit, wenn Sie mir Tipps für die Verbesserung geben.
Die erste Rückgabe beendet die Ausführung der Funktion. – Phiter
Sie erfinden das Rad neu, indem Sie versuchen, Ihre eigene aktive Aufnahmefunktion zu erstellen, Sie sollten nach einem bereits vorhandenen suchen, wie [PHP ActiveRecord] (http://www.phpactiverecord.org/) – Phiter
Auch nicht bauen Abfragen * von Hand *, ** immer ** verwenden [vorbereitete Anweisungen] (https://php.net/manual/mysqli.quickstart.prepared-statements.php). – Yoshi