Непроверенный код:
if (!isset($_POST['SAVE'], $_POST['name'], $_POST['city'])) { // avoid Notices
echo "Missing required submission data";
} elseif (!strlen(trim($_POST['name']))) { // validate however you wish
echo "Name data is not valid"; // explain however you wish
} elseif (!strlen(trim($_POST['city']))) { // validate however you wish
echo "City data is not valid"; // explain however you wish
} elseif (!$con = new mysqli("localhost", "root", "", "db")) { // declare and check for a falsey value
echo "Connection Failure"; // $con->connect_error <-- never show actual error details to public
} elseif (!$stmt = $con->prepare("INSERT INTO Info VALUES (?,?)")) {
echo "Error @ prepare"; // $con->error; // don't show to public
} elseif (!$stmt->bind_param("ss", $_POST['name'], $_POST['city'])) {
echo "Error @ bind"; // $stmt->error; // don't show to public
} elseif (!$stmt->execute()) {
echo "Error @ execute"; // $stmt->error; // don't show to public
} else {
echo "Insert Successful";
}
Условия проверки данных отправки гарантируют, что значения не являются пустыми и не полностью состоят из пробельных символов.Если вы хотите еще больше уточнить требование проверки, просто обновите условия.
Если вы хотите просто убедиться, что $_POST['name']
и $_POST['city']
не пусты, вы можете заменить первые три условия на
if (empty($_POST['SAVE']) || empty($_POST['name']) || empty($_POST['city'])) {
echo "Submission data is missing/invalid";
}...
Если вы не используете подготовленный оператор, то такие значения, как Paul O'Malley
, будут нарушать ваш запрос.Хуже того, если кто-то хочет попробовать выполнить некоторые инъекционные атаки, ваш запрос уязвим.
Проверка affected_rows()
не нужна.Если при выполнении запроса не появляется сообщение об ошибке, запрос INSERT был успешным.
Приведенные выше рекомендации - это лучшие рекомендации, которые я настоятельно рекомендую вам принять.