所以我有一个小小的网络服务器继续使用电话簿。 您可以单击“添加新成员”,但是当您从Web服务器填写所有内容并单击“保存”时,新行不会显示在show-phone-book文件中。 我翻译了它,但文件和评论用德语翻译。
我认为除此文件之外还有其他任何需要,添加新成员。
当我执行它时,我可以填写所有内容,点击“保存”,然后它就死了,我得到错误:Anfrage fehlgeschlagen。
<?php
if ( $_GET['aktion'] == "speichern" )
{
$Nachname = $_GET['Nachname'];
$Vorname = $_GET['Vorname'];
$Anrede = $_GET['Anrede'];
$Geburtsdatum = $_GET['Geburtsdatum'];
$Telefonnummer= $_GET['Telefonnummer'];
$Email = $_GET['Email'];
$sql = "INSERT INTO Adressbuch SET ";
$sql .= " Nachname = '$Nachname', ";
$sql .= " Vorname = '$Vorname', ";
$sql .= " Anrede = '$Anrede', ";
$sql .= " Geburtsdatum = '$Geburtsdatum', ";
$sql .= " Telefonnummer = '$Telefonnummer',";
$sql .= " Email = '$Email'";
require_once ('konfiguration.php');
$db_erg = mysqli_query($db_con, $sql)
or die(" Anfrage fehlgeschlagen");
exit;
}
?>
<form name="" action="" method="GET" enctype="text/html">
<p>Bitte geben Sie die Informationen von Ihrem neuen Kontakt ein<br>
</p>
<p>Nachname:<br>
<input type="text" name="Nachname" value="" size="60">
</p>
<p>Vorname:<br>
<input type="text" name="Vorname" value="" size="60">
</p>
<p>Anrede:<br>
<input type="radio" name="Anrede" value="w"> Frau
<input type="radio" name="Anrede" value="m"> Herr
</p>
<p>Geburtsdatum (YYYY-MM-DD):<br>
<input type="date" name="Geburtsdatum" value="" size="10">
</p>
<p>Telefonnummer:<br>
<input type="text" name="Telefonnummer" value="" size="60">
</p>
<p>E-Mail:<br>
<input type="text" name="Email" value="" size="60">
</p>
<input type="hidden" name="aktion" value="speichern">
<input type="Submit" name="" value="speichern">
</form>
答案 0 :(得分:0)
首先,不要使用$_GET
而是使用$_POST
方法。
然后使用预准备语句来防止sql注入。
<?php
require_once('konfiguration.php');
if (isset($_POST['submit'])) {
$Nachname = $_POST['Nachname'];
$Vorname = $_POST['Vorname'];
$Anrede = $_POST['Anrede'];
$Geburtsdatum = $_POST['Geburtsdatum'];
$Telefonnummer = $_POST['Telefonnummer'];
$Email = $_POST['Email'];
$sql = "INSERT INTO Adressbuch (Nachname,Vorname,Anrede,Geburtsdatum,Telefonnummer,Email) VALUES(?,?,?,?,?,?) ";
$stmt = mysqli_prepare($db_con, $sql);
mysqli_stmt_bind_param($stmt, 'ssssss', $Nachname, $Vorname, $Anrede, $Geburtsdatum, $Telefonnummer, $Email);
if (mysqli_stmt_execute($stmt)) {
echo "data inserted";
} else {
printf("Error: %s.\n", mysqli_stmt_error($stmt));
}
}
?>
<form name="" action="" method="POST" enctype="text/html">
<p>Bitte geben Sie die Informationen von Ihrem neuen Kontakt ein<br>
</p>
<p>Nachname:<br>
<input type="text" name="Nachname" value="" size="60">
</p>
<p>Vorname:<br>
<input type="text" name="Vorname" value="" size="60">
</p>
<p>Anrede:<br>
<input type="radio" name="Anrede" value="w"> Frau
<input type="radio" name="Anrede" value="m"> Herr
</p>
<p>Geburtsdatum (YYYY-MM-DD):<br>
<input type="date" name="Geburtsdatum" value="" size="10">
</p>
<p>Telefonnummer:<br>
<input type="text" name="Telefonnummer" value="" size="60">
</p>
<p>E-Mail:<br>
<input type="text" name="Email" value="" size="60">
</p>
<input type="hidden" name="aktion" value="speichern">
<input type="Submit" name="submit" value="speichern">
</form>
答案 1 :(得分:0)
您可以尝试使用以下方法。
mysqli_query($db_con,$sql) or mysqli_error($db_con);
答案 2 :(得分:-2)
您正在为INSERT语句使用UPDATE查询语法。
尝试以下方法:
INSERT INTO Adressbuch (Nachname, Vorname, ...) VALUES ('$Nachname', '$Vorname',...);