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

时间:2014-04-17 12:44:17

标签: php mysql database phpmyadmin store

昨天我花了将近4个小时来修复这个PHP代码..我是php的初学者,所以我没有经验在这段代码中找到bug。

.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>

3 个答案:

答案 0 :(得分:3)

这部分是受影响的:

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 injection开放。使用mysqli_*功能。 (我建议您使用prepared statementsPDO

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


因为你刚刚开始编码:

以下是一些有关预备语句的教程,您可以学习并尝试:

以下是PDO的一些教程:

答案 1 :(得分:0)

不要使用该代码。它已经很老了。尝试使用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();

?>

答案 2 :(得分:0)

问题最有可能出现在这一行

$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')");