Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql num_行检查多个post值_Php_Html_Mysql - Fatal编程技术网

Php mysql num_行检查多个post值

Php mysql num_行检查多个post值,php,html,mysql,Php,Html,Mysql,我需要对多个输入字段执行num_行检查,以检查是否所有字段都有数据库中的电子邮件。如果数据库中没有一个字段,则应回显该值不是已注册的电子邮件。此外,如果该字段为空,则会忽略该值,除非所有字段均为空,否则会回显消息。我所做的是有缺陷的,因为如果第一个输入字段为空,它就不起作用。有没有更好的办法 foreach($_POST as $value){ $usercheck = "SELECT email FROM users WHERE email = '$value'";

我需要对多个输入字段执行num_行检查,以检查是否所有字段都有数据库中的电子邮件。如果数据库中没有一个字段,则应回显该值不是已注册的电子邮件。此外,如果该字段为空,则会忽略该值,除非所有字段均为空,否则会回显消息。我所做的是有缺陷的,因为如果第一个输入字段为空,它就不起作用。有没有更好的办法

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";
}
当然

// 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
}

大致如下:

$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注入攻击。 要防止这种情况,您可以:

  • 使用
  • 使用(建议)
  • 使用PDO(建议)

在foreach循环中

在第一次迭代中,你似乎正在突破。 我想知道下一个会怎么样。我删除了中断,并将另一个代码移到了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";
    }



       }

我知道一定会有更好的。谢谢你给我看,这看起来很完美。:)这看起来与我之前的帖子非常相似。但是,您有几个错误需要纠正。将第2行中的
$value
替换为
$list
。。。在第1行的
glue
中为
infrade()
添加撇号,否则将得到$list='field1,field2,field3',除非它们是整数,否则将中断查询。MySQL需要(1、2、3)或字符串('1','2','3')。不在('1,2,3')。如果您每个用户只有1封电子邮件,您应该将MySQL查询限制为1封。