Я пытаюсь сделать так, чтобы он проверял, существует ли электронная почта в базе данных, прежде чем вставлять в нее данные.
Вот мой код:
<?php $servername = "servername"; $username = "username"; $password = "password"; $dbname = "dbname"; $Mail = $_POST['email']; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } //Inputed in E-Mail Field $Mail = $_POST['email']; $SearchEmail = $conn->query("SELECT (Mail) FROM betakey WHERE Mail = '$Mail'"); if ($SearchEmail->num_rows > 0) { print "That Email is already registered for the closed alpha"; } else { $conn->query("INSERT INTO betakey VALUES ('$Mail')"); } $conn->close(); ?>
Это не дает мне никакой ошибки, когда я обращаюсь к странице, но она также не отвечает на то, что она существует, или вставляет данные, когда это не так.
Проблема заключается в вашем запросе вставки. Запрос вставки всегда структурирован, как показано ниже.
INSERT INTO table_name (column1, column2, column3, …) VALUES (value1, value2, value3, …) См .: http://www.w3schools.com/php/php_mysql_insert.asp
Применив это к вашему коду, вы получите следующее.
<?php $servername = "servername"; $username = "username"; $password = "password"; $dbname = "dbname"; $Mail = $_POST['email']; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } //Inputed in E-Mail Field $Mail = $_POST['email']; $SearchEmail = $conn->query("SELECT count(Mail) FROM betakey WHERE Mail = '$Mail'"); if ($SearchEmail->num_rows > 0) { print "That Email is already registered for the closed alpha"; } else { $conn->query("INSERT INTO betakey (Mail) VALUES ('$Mail')"); } $conn->close(); ?>
И я предлагаю вам забрать одну из двух «$ Mail = $ _POST ['email']; ', потому что бесполезно объявлять переменную дважды таким же образом.