mysql num_row检查多个帖子值

时间:2013-01-27 02:33:28

标签: php html mysql

我需要对多个输入字段执行num_row检查,以检查所有字段是否都有数据库中的电子邮件。如果一个字段不在数据库中,它应该回显该值不是已注册的email.also如果该字段为空它忽略它,除非所有字段都为空,在这种情况下它回显一条消息。我所做的是有缺陷的,因为如果第一个输入字段为空则它不起作用。有更好的方法吗?

foreach($_POST as $value){
        $usercheck =  "SELECT email FROM users WHERE email = '$value'";
        $usercheck = $db->query($usercheck);

        if($usercheck->num_rows !== 0 || $value =="") 
          {
            $valid="1";
          }
               break;
       }

     if(empty($value))
 {
    echo "none filled in";
 }  else
    if ($valid == "1")
{
   echo "all good";
}  else
{
  echo $value." is not a user";
}

3 个答案:

答案 0 :(得分:0)

当然。

// Dump all of $_POST into a long, concatenated string
// results in: field1','field2','field3
$group = implode( "','", $_POST );

$sql_statement = "SELECT email FROM users WHERE email IN ('$group'); ";
$results = $db->query( $sql_statement );

if ( $results->num_rows > 0 ){
    // valid
} else {
    // not valid
}

答案 1 :(得分:0)

有些事情:

$list = implode('`,`', $_POST);
$usercheck =  "SELECT email FROM users WHERE email IN ('$value')";
$usercheck = $db->query($usercheck);

if(empty($_POST)) {
    echo "all good";
} elseif($usercheck->num_rows > 0) {
    echo "none filled in";
} else {
    echo "$value is not a user";
}

请注意,您的代码不安全,可以通过SQL注入进行利用。 为了防止这种情况,您可以:

答案 2 :(得分:0)

在foreach循环中

你似乎在第一次迭代中打破了。 我怎么会想到下一个呢?我删除了中断并将其他代码移到了它外面的foreach循环中。

  foreach($_POST as $value){
            $usercheck =  "SELECT email FROM users WHERE email = '$value'";
            $usercheck = $db->query($usercheck);

            if($usercheck->num_rows !== 0 || $value =="") 
              {
                $valid="1";
              }
        if(empty($value))
     {
        echo "none filled in";
     }  else
        if ($valid == "1")
    {
       echo "all good";
    }  else
    {
      echo $value." is not a user";
    }



       }