Есть несколько вещей, которые вы должны сделать с этим кодом.
Во-первых, поскольку вы пытаетесь использовать каждое поле в своей форме, вы должны добавить атрибут required
к каждому полю ввода.
Во-вторых, поскольку вы отправляете пост-запрос, я бы посоветовал вам проверить в своем PHP-скрипте, является ли запрос POST, и проверить, существуют ли значения, которые вы пытаетесь получить из POST. Это не позволит кому-либо просто перейти к вашему сценарию и попытаться выполнить его ненадлежащим образом:
<?php
if (
$_SERVER['REQUEST_METHOD'] === 'POST' &&
array_key_exists('name', $_POST) &&
array_key_exists('email', $_POST) &&
array_key_exists('va', $_POST) &&
array_key_exists('va-iata', $_POST) &&
array_key_exists('pricing', $_POST) &&
array_key_exists('vam-vms', $_POST) &&
array_key_exists('add-info', $_POST)
) {
/* ... */
} else {
http_response_code(401);
}
?>
В-третьих, не используйте mysqli
. Класс PDO отсутствует с PHP 5.1.0 и является предпочтительным методом подключения к базам данных. В этом случае используйте инструкцию Try / Case, чтобы попытаться установить соединение PDO:
try {
/* database configuration */
$servername = "host";
$username = "username";
$password = "password";
$dbname = "dbname";
/* establish a PDO connection */
$dsn = "mysql:dbname=$dbname;host=$servername;charset=utf8mb4";
$db = new PDO($dsn, $username, $password);
$db -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db -> setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
/* run SQL query */
} catch(PDOException $ex) {
/* handle database error */
}
В-четвертых, вам нужно немного подправить оператор SQL, я думаю, что именно здесь он вызывает некоторые ошибки. Обычно рекомендуется избегать имени столбца с помощью обратных тиков, но в этом случае, поскольку в именах столбцов есть пробелы, это действительно необходимо (плюс name
также может быть ключевым словом). Также рекомендуется использовать параметры, чтобы предотвратить внедрение SQL. Идея состоит в том, что вы передаете пользовательское имя в запросе SQL с префиксом :
, и это имя соответствует значению, определенному в передаваемом массиве:
/* Insert all the values in the request_site */
$stmt = $db->prepare('
INSERT INTO `request_site` (
`Name`,
`Email Address`,
`Virtual Airline`,
`Virtual Airline IATA`,
`Pricing`,
`VAM/PHPVMS`,
`Additional info`
) VALUES (
:name,
:email,
:va,
:vaiata,
:pricing,
:vamvms,
:additionalinfo
);
');
$stmt->execute(array(
':name' => $name,
':email' => $email,
':va' => $va,
':vaiata' => $vaiata,
':pricing' => $pricing,
':vamvms' => $vamvms,
':additionalinfo' => $additionalinfo
));
Соберите все вместе, и вы получите:
<?php
if (
$_SERVER['REQUEST_METHOD'] === 'POST' &&
array_key_exists('name', $_POST) &&
array_key_exists('email', $_POST) &&
array_key_exists('va', $_POST) &&
array_key_exists('va-iata', $_POST) &&
array_key_exists('pricing', $_POST) &&
array_key_exists('vam-vms', $_POST) &&
array_key_exists('add-info', $_POST)
) {
/* put the $_POST values in variables */
$name = $_POST['name'];
$email = $_POST['email'];
$va = $_POST['va'];
$vaiata = $_POST['va-iata'];
$pricing = $_POST['pricing'];
$vamvms = $_POST['vam-vms'];
$additionalinfo = $_POST['add-info'];
try {
/* database configuration */
$servername = "host";
$username = "username";
$password = "password";
$dbname = "dbname";
/* establish a PDO connection */
$dsn = "mysql:dbname=$dbname;host=$servername;charset=utf8mb4";
$db = new PDO($dsn, $username, $password);
$db -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db -> setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
/* Insert all the values in the request_site */
$stmt = $db->prepare('
INSERT INTO `request_site` (
`Name`,
`Email Address`,
`Virtual Airline`,
`Virtual Airline IATA`,
`Pricing`,
`VAM/PHPVMS`,
`Additional info`
) VALUES (
:name,
:email,
:va,
:vaiata,
:pricing,
:vamvms,
:additionalinfo
);
');
$stmt->execute(array(
':name' => $name,
':email' => $email,
':va' => $va,
':vaiata' => $vaiata,
':pricing' => $pricing,
':vamvms' => $vamvms,
':additionalinfo' => $additionalinfo
));
echo 'New record created successfully';
} catch(PDOException $ex) {
/* handle database error */
echo 'Connection failed: ', $ex->getMessage();
}
} else {
http_response_code(401);
}
?>