昨天我花了将近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>
答案 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 statements或PDO)
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')");