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