我很难搞清楚如何在我的代码中编写if函数。我试图阻止我的PHP表单允许重复提交到我的MySQL数据库。我想根据输入到我表单中的电子邮件地址阻止提交。有人能引导我朝正确的方向发展吗?感谢。
<?php
$dbc = mysqli_connect('n/a', 'n/a', 'n/a', 'n/a')
or die('Error connecting to MySQL server.');
$store_name = $_POST['storename'];
$full_name = $_POST['fullname'];
$address = $_POST['address'];
$city = $_POST['city'];
$state = $_POST['state'];
$zip = $_POST['zip'];
$phone = $_POST['phone'];
$fax = $_POST['fax'];
$email = $_POST['email'];
$url = $_POST['url'];
$query = "INSERT INTO store_location (store_name, full_name, address, city, state, zip, phone, fax, email, url) VALUES ('$store_name', '$full_name', '$address', '$city', '$state', '$zip', '$phone', '$fax', '$email', '$url')";
mysqli_query($dbc, $query)
or die('Error querying database.');
echo 'New TeachPro store added.';
echo '<br/><br/>';
mysqli_close($dbc);
?>
答案 0 :(得分:1)
您应该在数据库表的电子邮件列中使用唯一键。现在,如果您尝试两次插入相同的电子邮件地址,MySQL将以相应的错误消息进行响应。您可能会捕获这些错误消息并向用户显示有用的错误消息文本。
我用这种方法检查用户名:
try
{
/** @var $userInsertUpdateStmt PDOStatement */
$userInsertUpdateStmt->execute();
}
catch(PDOException $e)
{
if($e->errorInfo[1] == 1062)
{
/* username already used */
return User::ERR_USERNAME_ASSIGNED;
}
return User::ERR_SQL;
}
答案 1 :(得分:1)
SELECT count(*) FORM ... WHERE store_name = ... OR full_name=...
如果此查询的结果为0行,那么您就可以了。
此外,您的查询很容易受到SQL注入(谷歌那样)。