php-将用户输入与表进行比较的循环
我有一个用户填写的表单,它进入的操作页面基本上只是将所有post_变量转换为session_变量,然后它查询数据库中可能与用户提交的电子邮件地址匹配的电子邮件地址。如果找到匹配项的行数等于一个或多个,我希望将用户引导到一个页面,告诉他们电子邮件已在使用,否则他们将引导到另一个php页面,在该页面中,所有信息都将写入数据库 出于某种原因,它无法工作——php(或mysql)找不到任何匹配项,即使表中有具有相同地址的行 希望有人能为我指出这一点。我在LAMP上使用PHP5.0 以下是表单“操作”的页面上的代码:php-将用户输入与表进行比较的循环,php,Php,我有一个用户填写的表单,它进入的操作页面基本上只是将所有post_变量转换为session_变量,然后它查询数据库中可能与用户提交的电子邮件地址匹配的电子邮件地址。如果找到匹配项的行数等于一个或多个,我希望将用户引导到一个页面,告诉他们电子邮件已在使用,否则他们将引导到另一个php页面,在该页面中,所有信息都将写入数据库 出于某种原因,它无法工作——php(或mysql)找不到任何匹配项,即使表中有具有相同地址的行 希望有人能为我指出这一点。我在LAMP上使用PHP5.0 以下是表单“操作”的页
首先,您在这里的引号是错误的:
$query = 'SELECT * FROM employee WHERE email = ".$_POST["email"]."';
不插入单引号(')。双引号(')为空。此外,您不应该在查询中直接使用$\u POST[“email”]
——这是一个安全漏洞,容易被滥用。我假设您知道这一点,因为您已经在使用$newemail
保存转义版本。试试这个:
$query = "SELECT * FROM employee WHERE email = '$newmail'";
我更新了代码,但仍然不起作用。我认为在提取结果并比较电子邮件adr时出现了一些问题。看起来这是前后颠倒的:if(mysql_num_rows($result)>=1){header(“Location:noemail.html”)
如果有一个或多个结果,你将进入noemail.html
。我明白你的意思,但应该是这样的。nomail.html是告诉用户他的地址已经在使用的页面。$newmail=mysql\u real\u escape\u string($\u POST['email']);$query mysql\u query(“选择来自员工的电子邮件,其中email='newmail'限制1”,$conn)或die(mysql_error());if(mysql_num_rows($query)>0{header(“Location:nomail.html”);else{header(“Location:insert.php”);}
$query = "SELECT * FROM employee WHERE email = '$newmail'";