У меня есть контактная форма на моем сайте, я хочу, чтобы пользователи с одним и тем же письмом не обращались в контакт более одного раза.Попытка проверить поле электронной почты для базы данных, чтобы предотвратить дублирование в контактной форме
На базе MySql, которая хранит данные, которые я сделал хранимую процедуру
DELIMITER //
CREATE PROCEDURE find_email(emailaddr VARCHAR(60))
BEGIN
DECLARE form_email VARCHAR(60);
SET form_email=emailaddr;
SELECT count(*)
FROM wordpress.cf7dbplugin_submits
WHERE form_name='Register'
AND field_name LIKE '%email%'
AND field_value=form_email;
END //
Таким образом, я мог бы получить число от того, сколько раз адрес электронной почты был в базе данных.
В моем PHP файл я сделал это
Global $res;
$res = $mydb->query("CALL find_email");
if($res>0)
{
echo "<script>alert('This email address is already in use!')</script>";
}
else
{
$tableName = $this->getSubmitsTableName();
$parametrizedQuery = "INSERT INTO `$tableName` (`submit_time`, `form_name`, `field_name`, `field_value`, `field_order`) VALUES (%s, %s, %s, %s, %s)";
$parametrizedFileQuery = "INSERT INTO `$tableName` (`submit_time`, `form_name`, `field_name`, `field_value`, `field_order`, `file`) VALUES (%s, %s, %s, %s, %s, %s)";
$order = 0;
$noSaveFields = $this->getNoSaveFields();
$foundUploadFiles = array();
global $mydb;
}
Если я изменить код и установить вручную $ Рез быть 0, форма работы, как это предполагается. В противном случае ничего не происходит, когда я нажимаю кнопку «Отправить».
Надеюсь, что я разместил достаточно подробностей, заранее спасибо всем, у кого есть решение.
Почему бы вам не передать какие-либо параметры в хранимую процедуру? Не должно быть («CALL find_email (some_email)»)? – ducin
@tkoomzaaskz Извините, но можете ли вы уточнить? Предполагается, что «какая-то электронная почта» является конкретным электронным письмом? – collin
вы создали хранимую процедуру, которая принимает один строковый аргумент. Когда вы вызываете эту хранимую процедуру, вы не передаете никаких аргументов, которые выглядят случайными. Я думал о чем-то вроде: $ res = $ mydb-> query («CALL find_email ($ some_email)»); – ducin