방금 PHP와 SQL로 시작했고 제출 된 양식을 mysql 테이블에 삽입하려고했습니다. 이미 답변 된 질문에서 많은 것을 얻었지만 데이터가 테이블에 삽입되지 않고 오류가 발생하지 않는 문제가 발생했습니다. affected_rows로 확인하면 -1이되지만 내 실수는 찾을 수 없습니다.양식을 MySQL에 삽입
양식
<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);
}
?>
나는 단순히 간과, 정말 분명 뭔가 생각 삽입하지만 난 너희들이 나를 도울 수 있기를 바랍니다.
편집 : 예. '및'되었습니다. 이제 제대로 작동합니다. 고마워요
SQL 주입 ... 준비된 문을 사용하십시오 ... – Rafael
은 id 자동 증가/기본 키입니까? 그렇다면, 필드를 모두 함께 제거하고 값에서'',''를 제거하고자 할 수 있습니다. 다른 필드 중 숫자 값이 있습니까? 그렇다면 주위에 아포스트로피가 필요하지 않습니다. 또한 Prepared Statement와 직선 쿼리를 비교하여 보안을 강화하십시오. 오류가있는 경우 에코를 시도 했습니까? 오, 그리고 '손님'은 아포스트로피가 없어야합니다. –
Protip 예 :'$ sql = "여기에 귀하의 SQL 문"; $ result = mysqli_query ($ sql) 또는 trigger_error ("Query Failed! SQL : $ sql - 오류 :".mysqli_error(), E_USER_ERROR); 또는 단순히'echo $ mysqli-> error;'를 실행하십시오. –