Вставка данных формы в таблицу базы данных MySQL

Я хочу вставить данные из формы в таблицу, но каждый раз, когда я получаю сообщение, ничего не происходит, я проверил и перепроверил все, но я не могу найти причину.

indextest1.php

<!DOCTYPE html> <html> <head> <title></title> <meta charset="UTF-8"> <meta name="author" content=""> <meta name="description" content=""> <meta name="keywords" content=""> </head> <body> <form action="test1.php" method="post"> <input type="text" name="name"><br> <input type="text" name="lastname"><br> <input type="radio" name="radio" value="one" checked> one<br> <input type="radio" name="radio" value="two" > two<br> <select name="drop"> <option value="0" selected>0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> </select> <input type="checkbox" name="check" value="1"><br> <input type="submit" value="Submit"> </form> </body> </html> 

test1.php

 <?php $servername = "localhost"; $username = "root"; $password = "root"; $dbname = "db-test"; $connect = ("$servername, $username, $password, $dbname") or die ("ERROR DURING CONNECTION"); $name = $_POST["name"]; $lastname = $_POST["lastname"]; $radio = $_POST["radio"]; $drop = $_POST["drop"]; $check = $_POST["check"]; $sql_insert = mysql_query("INSERT INTO test-table (id, name, lastname, radio, drop, check) VALUES ('', '$name', '$lastname', '$radio', '$drop', '$check')"); header("location: indextest1.php"); ?> 

Значения таблиц

введите описание изображения здесь

Спасибо заранее, я надеюсь, что предоставил всю необходимую информацию.

Related of "Вставка данных формы в таблицу базы данных MySQL"

Помимо другого ответа,

Во-первых, эта часть вашего запроса:

 INSERT INTO test-table (id, name, lastname, radio, drop, check) 

следует читать как

 INSERT INTO `test-table` (id, name, lastname, radio, `drop`, `check`) 

MySQL интерпретирует вашу таблицу как «таблицу теста минус ». Используйте тики или переименуйте его с помощью test_table подчеркивания test_table которая является безопасным разделителем.

Затем вы используете два зарезервированных слова MySQL, «drop» и «check». Также используйте клещи для них.

Справка:

Посмотрите, как MySQL сообщает вам, где начинается синтаксическая ошибка?

У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «drop, check»

и это показало бы вам еще один

У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «проверкой»)

Чтобы уточнить, вы смешиваете MySQL API с

 mysql_query("INSERT ... 

которые эти функции mysql_ не смешиваются с вашим mysql_ методом. Используйте то же самое из подключения к запросу

 mysqli_query($connect, "INSERT ... 

и, конечно, тот факт, что вы открыты для SQL-инъекции. Используйте подготовленное заявление:

Вы также должны проверить наличие пустых полей в массивах POST, таких как !empty() .

Sidenote: Если апостроф или любой другой персонаж должен быть вставлен, что MySQL будет жаловаться, вы должны избегать их. В любом случае, вы должны.

Плюс, не забудьте добавить exit; после заголовка. В противном случае, если у вас больше кода ниже, он может продолжить и выполнить.

 header("location: indextest1.php"); exit; 

Я бы порекомендовал вам прочитать о том, как сначала подключиться к MySQL с PHP, прежде чем продолжить, как показывает ваш код, в противном случае.

http://php.net/manual/en/function.mysqli-connect.php http://php.net/manual/en/mysqli.query.php

Прекратите использование mysql , поскольку он устарел. Вы должны правильно указать аргументы в своем скрипте. Ваш $connect – это полностью недопустимый синтаксис (для подключения к MySQL)

 <?php $servername = "localhost"; $username = "root"; $password = "root"; $dbname = "db-test"; $connect = mysqli_connect($servername, $username, $password, $dbname) or die ("ERROR DURING CONNECTION"); $name = $_POST["name"]; $lastname = $_POST["lastname"]; $radio = $_POST["radio"]; $drop = $_POST["drop"]; $check = $_POST["check"]; $sql = "INSERT INTO test-table (name, lastname, radio, drop, check) VALUES ('$name', '$lastname', '$radio', '$drop', '$check')"; //Don't need to insert id since it's an PRI_KEY A_I $result = mysqli_query($connect, $sql) or die (mysqli_error($connect)); header("location: indextest1.php"); ?> 

Помимо прочего, вы просите, чтобы у вас была SQL injection attack которую вы можете легко заблокировать. mysqli_real_escape_string

чтобы добавить тип данных varchar в таблицу sql, мы должны поместить его в одинарную кавычку, поэтому сначала поместите одинарную кавычку, если значение находится в переменной, чем между двойными кавычками и точками (только для php).

Для значения auto increment нам нужно передать только null.

напишите свой запрос следующим образом.

 $sql_insert = mysql_query("INSERT INTO test-table (id, name, lastname, radio, drop, check) VALUES (null, '".$name."', '".$lastname."', '".$radio."', ".$drop.", ".$check.")"); 

Надеюсь, это сработает.