У меня есть форма, которая имеет 14 числовых входов и 2 текстовых ввода - имя и адрес электронной почты. Кто-то добавляет данные и сохраняется в базе данных - я это сделал. Но когда кто-то добавляет данные во второй раз с использованием того же адреса электронной почты, база данных должна переопределять данные в определенной строке с этим адресом электронной почты.Проверьте, существует ли электронная почта в базе данных и добавляет/изменяет данные.
Я читал о UPDATE в sql, но не знаю, как сделать запрос, который будет проверять, существует ли это письмо, и после этого добавлять или обновлять данные.
<?php
$servername = "localhost";
$username = "username";
$password = "pass";
$dbname = "test";
$quantity = $_POST['quantity'];
$quantity2 = $_POST['quantity2'];
$quantity3 = $_POST['quantity3'];
$quantity4 = $_POST['quantity4'];
$quantity5 = $_POST['quantity5'];
$quantity6 = $_POST['quantity6'];
$quantity7 = $_POST['quantity7'];
$quantity8 = $_POST['quantity8'];
$quantity9 = $_POST['quantity9'];
$quantity10 = $_POST['quantity10'];
$quantity11 = $_POST['quantity11'];
$quantity12 = $_POST['quantity12'];
$quantity13 = $_POST['quantity13'];
$quantity14 = $_POST['quantity14'];
$name = $_POST['name'];
$email = $_POST['email'];
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO Results (1paracwierc, 1paracwierc2, 2paracwierc, 2paracwierc2, 3paracwierc, 3paracwierc2, 4paracwierc, 4paracwierc2, 1parapol, 1parapol2, 2parapol, 2parapol2, final, final2, name, email)
VALUES ($quantity, $quantity2, $quantity3, $quantity4, $quantity5, $quantity6, $quantity7, $quantity8, $quantity9, $quantity10, $quantity11, $quantity12, $quantity13, $quantity14, '$name', '$email')";
if ($conn->query($sql) === TRUE) {
echo "Saved.";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
Предупреждение: не вставляйте введенные пользователем данные непосредственно в ваши SQL-запросы, в противном случае вы склонны к атакам SQL-инъекций. Подумайте, что произойдет, если '$ email' содержит' blah '); drop table Результаты; --'. См. Http://php.net/manual/en/security.database.sql-injection.php для обсуждения, а также http://stackoverflow.com/q/60174/21945, чтобы избежать этой проблемы. – mhawke
@mhawke, и что, если этот вход, в котором хранится адрес электронной почты $, имеет тип = «email»? Когда этот ввод имеет тип = «электронная почта», браузер не позволяет добавлять разные данные, кроме электронной почты. – Marcin
Нет ничего, что могло бы помешать пользователю отправлять данные формы на ваш сервер без браузера, например. используя завиток. Кроме того, старые браузеры могут не поддерживать « mhawke