【发布时间】:2015-01-24 02:33:46
【问题描述】:
所以我正在尝试将 $_POST 值与我的数据库进行比较,如果匹配,则回显“已采用。输入另一个”。但这似乎不起作用..所以我正在尝试将 $_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';
}?>
【问题讨论】:
-
idNUMBER和idnumber在某些服务器上可能不一样。 -
idNUMBER 和 idnumber?
-
您不能在带有单引号的字符串中插入变量。无论如何,这都是一个坏主意,因为它使您容易受到 SQL 注入的影响。您应该改用绑定参数。见stackoverflow.com/q/60174/3794472
-
第一个 if 的右括号 } 也丢失了
-
您需要检查错误。 IE。
if(!$result = $mysqli->query($idmatch)){ die('There was an error running the query [' . $mysqli->error . ']'); }- 另外,请确保 id 号是 int 而不是字符串。
标签: php validation mysqli