这将是我的一部分代码。
$name = $_POST['UserNames'];
$pw = sha1($_POST['Passwords']);
$mail = $_POST['Emails'];
$pc = $_POST['Postcodes'];
$status = "0";
mysql_query("INSERT INTO userinfo
(Username,Password,Email,Postcode,status,valid)
VALUES
('$name','$pw','$mail','$pc','$status','$validate')
");
如何确保每个输入都不为空,电子邮件永远不会重复。
答案 0 :(得分:0)
试试这个,
mysql_query("INSERT INTO userinfo (Username,Password,Email,Postcode,status,valid) VALUES ('$name','$pw','$mail','$pc','$status','$validate') ON DUPLICATE KEY UPDATE status='0'");
有关详细信息,请参阅https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
答案 1 :(得分:0)
使用帖子字段的empty
函数来检查它是否包含某些内容。
对于电子邮件,您必须在数据库中为此字段使用UNIQUE子句
答案 2 :(得分:0)
关于电子邮件:将userinfo表格中的电子邮件列设置为唯一,并在insert just do on duplicate ignore上
关于这些领域,以及你正在工作的方式只需要设置($ _ POST ['XXX'])&& !空($ _ POST [ 'XXX'])。更好的方法是使用一些输入验证类like this one。
答案 3 :(得分:0)
对于空输入,您可以执行以下操作:
$name = (isset($_POST['UserNames']) && !empty($_POST['UserNames'])) ? $_POST['UserNames'] : FALSE;
对于重复的电子邮件检查,您需要在执行INSERT语句之前执行SELECT查询。
答案 4 :(得分:-1)
首先在mysql查询之前检查值:
$valid = true;
foreach($_POST AS $key=>$value)
{
if($value == null){
echo "Please provide ".$key;
$valid = false;
}
}
if($valid == true)
{
// check if email is in DB
$result = mysql_query("SELECT email FROM user info WHERE Email = '".addslashes($_POST['email'])."'");
if(mysql_num_rows($result) == 1)
{
echo "Email is already registered in our DB";
}
else
{
mysql_query("INSERT INTO userinfo (Username,Password,Email,Postcode,status,valid) VALUES ('$name','$pw','$mail','$pc','$status','$validate')");
}
}