PHP MySQL:如何将写入PHP的数据添加到Mysql数据库中

时间:2017-07-07 08:35:41

标签: php mysql database

所以我有一个小小的网络服务器继续使用电话簿。 您可以单击“添加新成员”,但是当您从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>

3 个答案:

答案 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',...);