如何避免重复输入和空输入?

时间:2014-02-18 11:15:25

标签: php sql

这将是我的一部分代码。

$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')
");

如何确保每个输入都不为空,电子邮件永远不会重复。

5 个答案:

答案 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')");
    }
}