Also ich möchte eine Datenbank für Benutzer erstellen und Werte in die Felder einfügen, die Variable verwenden. Anfangs habe ich versucht, die do-Funktion aufzurufen, aber die Variablen wurden nicht richtig gelesen. Daher entschied ich mich, preparate und execute separat zu verwenden. Dies ist mein Code:SQLite Vorbereitungsmethode schlägt aufgrund von Syntaxfehler fehl
$dbh->do("DROP TABLE IF EXISTS Users");
$dbh->do("CREATE TABLE Users(
zid TEXT,
Name TEXT,
Email TEXT,
password TEXT,
Mates TEXT,
Program TEXT,
Courses TEXT,
Suburb TEXT,
Birthday TEXT)");
$zid = "z33432523";
$name = "John Doe";
$email = "[email protected]";
$password = "alien";
$mates = "z3459148 z3458291";
$program = "";
$courses = "";
$suburb = "";
$birthday = "13/5/1992";
$sth = $dbh->prepare('INSERT INTO Users VALUES (?, ?, ?, ?, ?. ?, ?, ?, ?)');
$sth->execute($zid, $name, $email, $password, $mates, $program, $courses, $suburb, $birthday);
$dbh->disconnect();
Allerdings, wenn ich diesen Code versuchen laufe ich die folgende Fehlermeldung erhalten:
DBD::SQLite::db prepare failed: near ".": syntax error at ./dbm.pl line 35.
Ich bin mir nicht sicher, was das Problem ist?
Wenn Sie einen Fehler erhalten, der ein '.' in deinem SQL, dann solltest du vielleicht anfangen, indem du dein SQL nach Punkten durchsuchst :-) –
@DaveCross haha das ist peinlich ...... danke – reetyn
Schwitz nicht über einen Punkt. Das passiert uns allen. ;) Zu einer anderen Anmerkung, es sieht so aus, als ob deine Spalte 'Mates' IDs der Freunde dieses Benutzers enthalten soll. Wenn Sie mehrere Relationen in eine Spalte einfügen, ist Ihr Datenbankentwurf _unnormalisiert_, was für eine relationale Datenbank eine schlechte Entscheidung ist. Es wäre klüger, eine andere Tabelle zu erstellen, z. 'Users_Mates' mit den Spalten' relation_id', 'user_id' und' mate_id'. Jetzt können Sie einen Datensatz für jede Beziehung haben (im wahrsten Sinne des Wortes) ... – simbabque