http://php.net/manual/en/mysqli.prepare.php
)
Я работаю над своим личным проектом, и я принимаю имя и адрес электронной почты, поэтому я создал базу данных под названием:
emailtemp с столбцами «name» и «email»
Страница PHPMyAdmin
Форма HTML:
<form method="post" action="connect.php" class="contact100-form validate-form">
<div class="wrap-input100 m-b-10 validate-input" data-validate = "Name is required">
<input class="s2-txt1 placeholder0 input100" type="text" name="username" placeholder="Your Name">
<span class="focus-input100"></span>
</div>
<div class="wrap-input100 m-b-20 validate-input" data-validate = "Email is required: ex@abc.xyz">
<input class="s2-txt1 placeholder0 input100" type="text" name="emailAddress" placeholder="Email Address">
<span class="focus-input100"></span>
</div>
<div class="w-full">
<button class="flex-c-m s2-txt2 size4 bg1 bor1 hov1 trans-04">
Subscribe
</button>
</div>
</form>
PHP-файл:
<?php
$connect = mysqli_connect("mysql.*****.net","*****","****>","emailtemp");
//Sending form data to sql db.
mysqli_query($connect,"INSERT INTO posts (customerName, customerEmail)
VALUES ('$_POST[username]', '$_POST[emailAddress]')";
?>
Исходя из всего, что я прочитал, и посмотрел на него, он должен работать, но после того, как я нажму «подписаться», он подтягивает connect.php и говорит: «В настоящее время не удается обработать этот запрос. HTTP ERROR 500»
Есть ли способ, чтобы этот процесс был в фоновом режиме и остался на той же странице и просто сказал, что он успешный?
http://php.net/manual/en/mysqli.prepare.php
)
Похоже, что вам не хватает )
в конце вашего mysqli_query()
звонка.
Если ваша БД действительно такая:
emailtemp с столбцами «name» и «email»
.. тогда вы должны соответствовать тем, что указаны в вашем запросе:
mysqli_query($connect,"INSERT INTO emailtemp (name, email)
VALUES ('$_POST[username]', '$_POST[emailAddress]')");
как это:
$username = $_POST[username];
$email = $_POST[emailAddress];
if ($username && $email) {
// stuff here
} else {
// other stuff here
}
Вы забыли закрыть функцию mysqli_query с помощью a) и вы забыли скобки вокруг имени пользователя и emailAdress
mysqli_query($connect,"INSERT INTO posts (customerName, customerEmail)
VALUES ('$_POST[username]', '$_POST[emailAddress]')");
Также этот код делает вас уязвимыми для SQL-инъекций
Пользователи могут вводить другие команды на сервер SQL, и они выполняются с правами администратора.
Вы можете использовать PDO, безопасную реализацию SQL в PHP (при правильном использовании, конечно)
В вашем примере это будет:
$dbhost = "your-host";
$dbname = "your-db-name";
$dbusername = "your-username";
$dbpassword = "your-password";
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbusername, $dbpassword);
$statement = $conn->prepare("INSERT INTO posts (customerName, customerEmail)
VALUES (:username, :emailAddress");
$statement->execute(array(
"username" => $_POST['username'],
"emailAdress" => $_POST['emailAdress']
));