ich einen sehr einfachen Code haben Daten in die Datenbank einfügen, überprüft auch, ob bereits gleichen Daten in TabelleVariable nicht auf Tabelle eingefügt
[HTML]
<html>
<head>
<title>nickname</title>
</head>
<body>
<p>input nickname</p>
<form action="foo.php" method="post">
<input type="text" name="nickname" />
<input type="submit">
</form>
</body>
</html>
[PHP] hat
Ich lerne immer noch, wie man MySQL benutzt, was mache ich falsch? insbesondere diese Linie
$sql = "INSERT INTO nickname(nickname) VALUES(".$nickname.")";
$conn->query($sql);
die Daten in die Variable nicht auf die Tabelle eingefügt wird, passiert nichts. aber wenn ich $nickname
zu Klartext ersetzen, werden die Daten eingefügt.
bearbeiten
Warum ist das ein Duplikat? Die Frage ist nicht einmal über
Ihr Skript „wie SQL-Injection verhindern“ ist in Gefahr [SQL-Injection-Angriff] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) Werfen Sie einen Blick auf, was mit [Little Bobby Tables] passiert ist (http://bobby-tables.com/) Auch [wenn Sie sind Eingaben entgehen, es ist nicht sicher!] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) Verwenden Sie [vorbereitete parametrisierte Anweisungen] (http://php.net/manual/de/mysqli.quickstart.prepared-statements.php) – RiggsFolly
@RiggsFolly Danke für die Antwort, ja ich muss vorbereitete Aussagen verwenden, aber löst das das Problem? Ich schrieb ein einfaches Skript, nur um zu testen ... –
@ha_ryu ganz im Gegenteil, eine vorbereitete Aussage ist die sehr und die einzige Lösung für dieses Problem. Was bedeutet, dass eine doppelte Verbindung tatsächlich falsch ist. –