Php 嵌套ifs中的语法错误
我确信我的代码中有一个简单的语法错误,但我找不到它。这段代码的工作方式是,系统检查用户标识是否存在,是否存在,或者如果字段为空,则会创建错误。如果确定,它将转到下一个字段,即用户名,并执行相同的检查。它们都报告以前是否使用过相应的值,但都不报告字段是否为空Php 嵌套ifs中的语法错误,php,Php,我确信我的代码中有一个简单的语法错误,但我找不到它。这段代码的工作方式是,系统检查用户标识是否存在,是否存在,或者如果字段为空,则会创建错误。如果确定,它将转到下一个字段,即用户名,并执行相同的检查。它们都报告以前是否使用过相应的值,但都不报告字段是否为空 if($userID != ""){ $sql = "SELECT * FROM tbl_access WHERE userID = '$userID'"; $result = mysql_query($sql) or die
if($userID != ""){
$sql = "SELECT * FROM tbl_access WHERE userID = '$userID'";
$result = mysql_query($sql) or die(mysql_error());
$num_rows = mysql_num_rows($result);
if($num_rows == 0){
$error = "User ID not found, please enter your user ID";
}
}
else if($userID == ""){
$error = "Please enter your User ID";
}
else if($username != ""){
$sql = "SELECT * FROM tbl_access WHERE userName = '$username'";
$result = mysql_query($sql) or die(mysql_error());
if(!empty($result)){
$error = "Username already in use, please select a different username";
}
}
else if($username == ""){
$error = "Please enter a username";
}
当检查用户ID部分时,脚本工作正常,但它完全忽略用户名部分。我确信这一定是我自己的一个简单语法错误,但我已经盯着代码的同一部分看了好几个小时了,所以在编写嵌套的if-else语句以在多个备选方案之间进行选择时,我们将非常感谢您的帮助。请使用一些一致的布局,例如:
if ( condition1 )
statement1 ;
else if ( condition2 )
statement2 ;
. . .
else if ( condition-n )
statement-n ;
else
报表-e;
尝试此……。如果出现以下情况,请在第三个之前删除else:
if($userID != ""){
$sql = "SELECT * FROM tbl_access WHERE userID = '$userID'";
$result = mysql_query($sql) or die(mysql_error());
$num_rows = mysql_num_rows($result);
if($num_rows == 0){
$error = "User ID not found, please enter your user ID";
}
}
else if($userID == ""){
$error = "Please enter your User ID";
}
if($username != ""){
$sql = "SELECT * FROM tbl_access WHERE userName = '$username'";
$result = mysql_query($sql) or die(mysql_error());
if(!empty($result)){
$error = "Username already in use, please select a different username";
}
}
else if($username == ""){
$error = "Please enter a username";
}
你试图在一个if语句中做太多的事情。请记住,如果您陷入任何一个if或elseif语句中,那么整个if语句就结束了。你应该把它分解成更小的语句来实现你的期望
if($userID != "")
{
$sql = "SELECT * FROM tbl_access WHERE userID = '$userID'";
$result = mysql_query($sql) or die(mysql_error());
$num_rows = mysql_num_rows($result);
if($num_rows == 0)
{
$error = "User ID not found, please enter your user ID";
}
}
else
{
$error = "Please enter your User ID";
}
if($username != "")
{
$sql = "SELECT * FROM tbl_access WHERE userName = '$username'";
$result = mysql_query($sql) or die(mysql_error());
if(!empty($result))
{
$error = "Username already in use, please select a different username";
}
}
else
{
$error = "Please enter a username";
}
如果你做了类似上述陈述的事情,那么你应该没事。这将验证这两个变量,并在需要时对其中任何一个单独采取措施。通过这样做,您可以进一步缩短时间:
If(is_null($userID) || is_null($username))
{
//output your error message here
} else
{
//you know that both are populated, run your queries now
}
您好,谢谢您,但当我这样做时,它完全忽略了userID部分,并转到username部分(据我所知,这意味着userID是正确的;)。如果id是正确的,您希望发生什么?我已经通过将userID留空或输入一个不存在的用户名来测试它,但它完全忽略了它。如果ID丢失或不正确,它应该这样说,如果没有,它应该移动到表单中的下一个字段,并验证您遇到的错误,写一些东西,以便我帮助解决您的问题…嗨,我没有收到错误,它只是忽略了用户名部分我将尝试我认为您的情况没有得到纠正…谢谢,如果我注释掉了userid部分和username部分,我会感谢您的帮助,但是如果我使用它,它会完全忽略关于userid的部分。如果删除userid部分的userid部分,那么使用第二段代码,您可以在else部分同时执行userid和username。if假设用户应该在这些字段中输入一些内容,或者应该填充这些字段。如果其中一个可能为空,则顶部代码可能是处理此问题所需的方式。您是否从另一个表单获取userid。这有点复杂。print\u r($\u POST)->打印任何值。是的,userid来自另一个表,但是,我正在测试的表中有一个userid字段,所以不是这样。问题是它要么检查userid,要么检查username,但两者都不检查。最后,我在if-else之外单独进行了mysql查询,结果成功了。奇怪。。。谢谢你花时间来帮助我思考谢谢你的积极回复。很高兴知道你的问题已经解决了。{如果你喜欢我的帖子,请给我点评。}。祝您有个美好的一天。
If(is_null($userID) || is_null($username))
{
//output your error message here
} else
{
//you know that both are populated, run your queries now
}