繁体   English   中英

无法在数据库中存储数据(PHP,MySQL)

[英]Can't store data in Database(PHP, MySQL)

昨天我花了将近4个小时来修复此php代码。.我是php的初学者,所以我没有经验来查找此代码中的错误。

.php没有给我任何错误,我在开始时也写了这两行:

error_reporting(E_ALL | E_STRICT); ´
ini_set('display_errors', TRUE);



这是我的PHP代码:

//Variablen zuweisen
$name = filter_input(INPUT_POST, 'name');
$email = filter_input(INPUT_POST, 'email');
$betreff = filter_input(INPUT_POST, 'betreff');
$message = filter_input(INPUT_POST, 'message');

/*if (($vorname == "") OR ($nachname == "") OR($email == "")) {
        echo "Fehler: Eintrag unvollständig.";
        die; 
}*/

    //Verbindung herstellen
    $datenbank = mysql_connect("*******", "****", "*****") or die ("Verbindung fehlgeschlagen: ".mysql_error());
    $verbunden = mysql_select_db("4109932db1") or die ("Datenbank nicht gefunden oder fehlerhaft");

    //Daten in DB speichern
    $sql_befehl = mysql_query("INSERT INTO Contact_Requests (Name,Mail,Betreff,Message) VALUES ($name, $email, $betreff, $message");

    if($sql_befehl)
    { echo "Ihr Eintrag wurde hinzugefügt."; }

    //Verbindung beenden
    mysql_close($datenbank);

这是我的html代码,我有一个公式编写器,这应该将数据发送到我的php文件(insert.php)

<form method="post" action="insert.php">
                <table>
                    <tr>
                        <td>Name:*</td><td><input type="text" value="Name" id="name" onfocus="nameDel();" onblur="nameSet();" name="name" ></td>
                    </tr>
                    <tr>
                        <td>E-Mail:*</td><td><input type="email" value="E-Mail" id="email" onfocus="emailDel();" onblur="emailSet();" name="email"></td>
                    </tr>
                    <tr>
                        <td>Betreff:*</td><td><input type="text" value="Grund der Nachricht" id="regard" onfocus="regardDel();" onblur="regardSet();" name="betreff"></td>
                    </tr>
                </table>
                <p>
                    Nachricht:*<br><textarea cols="50" rows="10" id="msg" onfocus="msgDel();" onblur="msgSet();" name="message">Deine Nachricht</textarea>
                </p>    
                <p>
                    <input type="submit" value="Senden" id="send" onclick="sendContact();">
                </p>
            </form>

这部分是受影响的:

VALUES ($name, $email, $betreff, $message")

变量需要用引号引起来:

VALUES ('$name', '$email', '$betreff', '$message')

末尾的双引号位置不正确,因为您忘记了右括号)

(Name,Mail,Betreff,Message) VALUES ($name, $email, $betreff, $message");
                                                                     ^

应该是

VALUES ('$name', '$email', '$betreff', '$message')");

受影响的行现在应如下所示:

$sql_befehl = mysql_query("INSERT INTO Contact_Requests (Name,Mail,Betreff,Message) VALUES ('$name', '$email', '$betreff', '$message')");

旁注:您当前的代码可以进行SQL注入 使用mysqli_*函数。 (我建议您将其与预处理语句PDO一起使用

mysql_*函数已被弃用,并将从以后的PHP版本中删除。


由于您才刚刚开始进行编码:

这里有一些关于准备好的语句的教程,您可以研究和尝试:

以下是有关PDO的一些教程:

不要使用该代码。 很老了 与我或其他人一起尝试使用pdo。

为什么在JavaScript上使用sendContact()操作? 那不是PHP。 您正在使用ajax吗? 如果不是,您必须知道单击时是指js而不是php。

我不知道您做了什么,但是这里有一个PHP代码示例,您可以用来在数据库中插入数据。

<?php /*insert.php*/
try {
$database_connection = new PDO('mysql:host='. $dbhost .';dbname='. $dbname . ';charset=utf8', $dbuser, DB_PASS);
}   catch (PDOException $e) {
                echo $e->getMessage();
}

$database_connection->prepare("INSERT into db_name (add, ghj, qwe) VALUES (:value1, :value2, :value3"); //and so on

$database_connection->bind(":value1", $value, PDO::PARAM_vartype); //vartype is the variable type (integer-int...)

/ 其余的值 /

$database_connection->execute();

?>

该行最有可能出现问题

$sql_befehl = mysql_query("INSERT INTO Contact_Requests (Name,Mail,Betreff,Message) VALUES ($name, $email, $betreff, $message");

它应该是

$sql_befehl = mysql_query("INSERT INTO Contact_Requests (Name,Mail,Betreff,Message) VALUES ('$name', '$email', '$betreff', '$message')");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM