我刚开始使用PHP和SQL,并希望将提交的表单插入mysql表中。我从这里已经回答的问题中获得了很多东西,但现在遇到了数据未插入表中并且没有收到任何错误消息的问题。用affected_rows检查它的结果是 -1,但我找不到我的错误。
表格
<form method="post" action="anmeld.php">
<table>
<tr>
<td>
Familie/Name:
</td><td>
<input type="text" name="name" required>
</td>
</tr>
<tr>
<td>
Wir kommen Ja <input type="radio" name="anwesend" value="ja" checked>
Nein <input type="radio" name="anwesend" value="nein">
</td>
</tr>
<tr>
<td>
Wir sind
</td>
<td><input type="number" name="adult"> Erwachsene.
</td>
</tr>
<tr>
<td><br> Unsere Kinder sind<br>
Kind <br>Kind<br>Kind<br>Kind
</td>
<td><br><br>
<input type="number" name="child1"> Jahre alt. <br><input type="number" name="child2"> Jahre alt. <br><input type="number" name="child3"> Jahre alt. <br><input type="number" name="child4"> Jahre alt.
</td>
</tr>
<tr>
<td>
<input type="submit" name="submit" value="Abschicken">
</td>
</tr>
</table>
PHP 插入
<?php
$mysqli = new mysqli("127.0.0.1", "user", "userpw", "dbname");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_err;
}
if (!empty($_POST["submit"])) {
$familie = $_POST["name"];
$anwesend = $_POST["anwesend"];
$adult = $_POST["adult"];
$child1 = $_POST["child1"];
$child2 = $_POST["child2"];
$child3 = $_POST["child3"];
$child4 = $_POST["child4"];
$sql = "INSERT INTO 'guests' ('id', 'familie', 'anwesend', 'adult', 'child1', 'child2', 'child3', 'child4')
VALUES ('', '$familie', '$anwesend', '$adult', '$child1', '$child2', '$child3', '$child4')";
$mysqli->query($sql);
printf("Affected rows (INSERT): %d'n", $mysqli->affected_rows);
}
?>
我认为这是非常明显的事情,我只是忽略了,但我希望你们能帮助我。
编辑:是的,它是'和'。现在工作正常。谢谢你们
您对表和列使用了不正确的标识符,即引号。
删除表格和列两边的引号:
INSERT INTO guests (id, familie, anwesend, adult, child1, child2, child3, child4)
有关标识符限定符的详细信息,请参阅:
- http://dev.mysql.com/doc/refman/5.0/en/identifier-qualifiers.html
在查询后使用 echo $mysqli->error;
,这将指示语法错误。