Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.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:非常基本的验证_Php_Validation_Mysqli - Fatal编程技术网

PHP:非常基本的验证

PHP:非常基本的验证,php,validation,mysqli,Php,Validation,Mysqli,因此,我试图将$\u POST值与我的数据库进行比较,如果匹配,则回显“已获取。输入另一个”。但它似乎不起作用..所以我尝试将$\u POST值与我的数据库进行比较,如果匹配,则回显“已获取。输入另一个”。但它似乎不起作用。。 //if form has been submitted process it if(isset($_POST['submit'])){ //collect form data extract($_POST); //very basic va

因此,我试图将$\u POST值与我的数据库进行比较,如果匹配,则回显“已获取。输入另一个”。但它似乎不起作用..所以我尝试将$\u POST值与我的数据库进行比较,如果匹配,则回显“已获取。输入另一个”。但它似乎不起作用。。
//if form has been submitted process it
if(isset($_POST['submit'])){


    //collect form data
    extract($_POST);

    //very basic validation

if($idnumber ==''){
        $error[] = 'Please enter the ID Number.';
    }

    if($password ==''){
        $error[] = 'Please enter the password.';
    }

    if($passwordConfirm ==''){
        $error[] = 'Please confirm the password.';
    }

    if($password != $passwordConfirm){
        $error[] = 'Passwords do not match.';
    }

    if($fullname ==''){
        $error[] = 'Please enter the Full Name.';
    }
    if($role ==''){
        $error[] = 'Please select a role type.';
    }

$idmatch=$mysqli->query('SELECT idNUMBER from members where idnumber=$idnumber');
if (mysqli_num_rows($idmatch)==1) {
  echo'Id number already taken';
}?>

我从不使用extract,它不是真正推荐的,特别是对于POST值

我建议您直接使用post数组,并使用
isset()
检查它是否有值:

if(!isset($_POST['idnumber']){
    $error[] = 'Please enter the ID Number.';
}

if(!isset($_POST['password']){
    $error[] = 'Please enter the password.';
}

if(!isset($_POST['passwordConfirm']){
    $error[] = 'Please confirm the password.';
}

if($_POST['password']!= $_POST['passwordConfirm']){
    $error[] = 'Passwords do not match.';
}

if(!isset($_POST['fullname']){
    $error[] = 'Please enter the Full Name.';
}
if(!isset($_POST['role']){
    $error[] = 'Please select a role type.';
}

您还应该准备查询,或者至少对其进行转义。

我相信sql是区分大小写的!
您使用的是“idNUMBER”,然后使用“idNUMBER”进行过滤

idNUMBER
idNUMBER
在某些服务器上可能不相同。idNUMBER和idNUMBER?不能用单引号在字符串中插入变量。无论如何,这是一个坏主意,因为它使您容易受到SQL注入的影响。您应该改为使用绑定参数。请参阅右括号}了解第一个问题。如果缺少,则需要检查错误。也就是说,
如果(!$result=$mysqli->query($idmatch)){die('running the query['.$mysqli->error.]');}
-另外,请确保id号是int而不是字符串。@meda并取决于数据库排序规则。另请看您的右侧fred,我想我在考虑SQL语法itself@medaOP的问题可能是多种因素的混合。OP没有检查的是查询上的错误。Carlos,不是Windows上的错误。如果OP不是Windows,则该选项将不适用。这就是为什么我在OP的问题下说:“在某些服务器上,idNUMBER和idNUMBER可能不一样。”我知道,这是worm@Fred ii-;)的罐头