Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.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 嵌套if循环部分工作_Php_Html_Mysql - Fatal编程技术网

Php 嵌套if循环部分工作

Php 嵌套if循环部分工作,php,html,mysql,Php,Html,Mysql,我试图做的只是显示行值。现在假设“总部”字段没有值“H.O”,那么我想显示最后一行的值。我试过了,但找不到任何解决办法。以下是我的代码:(我只阻止了php部分) 作为$\u请求['id']只能有两种状态,即isset和!isset,将永远不会使用else语句。因为$\u请求['id']只能有2个状态,isset和!isset,else语句永远不会被使用。我不太明白你想怎么做,但这是不合逻辑的:三个步骤永远不会执行。试试看: if(isset($_REQUEST['id'])){ $

我试图做的只是显示行值。现在假设“总部”字段没有值“H.O”,那么我想显示最后一行的值。我试过了,但找不到任何解决办法。以下是我的代码:(我只阻止了php部分)





作为
$\u请求['id']
只能有两种状态,即isset和!isset,将永远不会使用else语句。

因为
$\u请求['id']
只能有2个状态,isset和!isset,else语句永远不会被使用。

我不太明白你想怎么做,但这是不合逻辑的:三个步骤永远不会执行。试试看:

if(isset($_REQUEST['id'])){
    $id=$_REQUEST['id'];
    $sql = "SELECT * FROM institute WHERE id =$id";
    $result = mysql_query($sql, $db);
    $row = mysql_fetch_array($result);
}
else if(!isset($_REQUEST['id'])){
    $sql = 'SELECT * FROM institute WHERE head_office ="H.O"';
    $result = mysql_query($sql, $db);
    $row = mysql_fetch_array($result);
}
if(count($row)<=0) {
    $sql="SELECT * FROM institute";
    $result = mysql_query($sql, $db);
    $n = mysql_num_rows($result); //counting number of rows
    if($n==0){
        header('Location: '.$setup_page);
    }
    else{
        $sql = 'SELECT * FROM institute ORDER BY id DESC LIMIT 1';
        $result = mysql_query($sql, $db);
        $row = mysql_fetch_array($result);
    }
}
if(isset($\u请求['id'])){
$id=$\u请求['id'];
$sql=“从id=$id的机构中选择*”;
$result=mysql\u查询($sql,$db);
$row=mysql\u fetch\u数组($result);
}
如果(!isset($\u请求['id']),则为else{
$sql='从总部所在的研究所选择*=“H.O”';
$result=mysql\u查询($sql,$db);
$row=mysql\u fetch\u数组($result);
}

如果(count($row)我不太明白你想怎么做,但这是不合逻辑的:这三个步骤永远不会执行。试试看:

if(isset($_REQUEST['id'])){
    $id=$_REQUEST['id'];
    $sql = "SELECT * FROM institute WHERE id =$id";
    $result = mysql_query($sql, $db);
    $row = mysql_fetch_array($result);
}
else if(!isset($_REQUEST['id'])){
    $sql = 'SELECT * FROM institute WHERE head_office ="H.O"';
    $result = mysql_query($sql, $db);
    $row = mysql_fetch_array($result);
}
if(count($row)<=0) {
    $sql="SELECT * FROM institute";
    $result = mysql_query($sql, $db);
    $n = mysql_num_rows($result); //counting number of rows
    if($n==0){
        header('Location: '.$setup_page);
    }
    else{
        $sql = 'SELECT * FROM institute ORDER BY id DESC LIMIT 1';
        $result = mysql_query($sql, $db);
        $row = mysql_fetch_array($result);
    }
}
if(isset($\u请求['id'])){
$id=$\u请求['id'];
$sql=“从id=$id的机构中选择*”;
$result=mysql\u查询($sql,$db);
$row=mysql\u fetch\u数组($result);
}
如果(!isset($\u请求['id']),则为else{
$sql='从总部所在的研究所选择*=“H.O”';
$result=mysql\u查询($sql,$db);
$row=mysql\u fetch\u数组($result);
}


如果(计数($row)强制性这容易导致SQL注入,因此非常不安全。while循环在哪里?强制性请升级到处理数据库的
mysqli\uuu
PDO
方法-
mysql\uu
函数不推荐使用。旁注:为了简化代码,您可以在代码末尾编写单个mysql\u查询和mysql获取不是在每个块中写入它,而是在第二个“else”之后,您的代码将如何运行?设置或不设置$_请求['id'],因此执行其中一个分支,下面的分支都不执行。您首先使用IF和ESLE IF相互否定,因此else部分永远不会执行。IF happy==true{}else IF happy==false{}else{}.Happy可以是真的,也可以是假的。必选的这很容易被SQL注入,因此非常不安全。while循环在哪里?必选的请升级到
mysqli_uu
PDO
处理数据库的方法-
mysql_u
函数被弃用。旁注:为了简化代码,您可以编写单个mysql_u查询和mysql在代码末尾获取,而不是在每个块中写入代码。在第二个“else”之后,您的代码将如何到达?设置或不设置$_REQUEST['id'],因此执行其中一个分支,而不是下面的分支。您首先使用IF和ESLE IF相互否定,因此else部分将永远不会执行。IF happy==true{}ELSE IF happy==false{}ELSE{}.Happy可以是真的,也可以是假的。这似乎是OP想要的,但仍然没有解决注入漏洞,因此我无法将其作为最佳解决方案。否则如果…不好,请将其替换为其他。我还有一个与此代码相关的查询。我想向用户显示一个通知,说明没有设置“H.O”,并且继续显示,直到用户设置H.O。我如何实现此目标?我尝试添加$notice=“请为您的机构设置总部!”;在最后一个else块中。这似乎是OP正在寻找的,但仍然没有解决注入漏洞,因此我无法将其作为最佳解决方案。else if…不好。用else替换它。我又收到了一个与这段代码相关的查询。我想向用户显示一个通知,说明没有设置“H.O”,然后继续o显示,直到用户设置H.o。我如何实现这一点?我尝试添加$notice=“请为您的机构设置总部!”;在最后一个else块中。就是这样。它不会从第三个if执行。是否有任何提示我可以用来执行条件并防止sql注入?就是这样。它不会从第三个if执行。是否有任何提示我可以用来执行条件并防止sql注入?那么我应该使用GET吗?那是一样的,isset函数将返回一个布尔值,因此您只能获得一个true或false值。知道这一点,您的代码如下所示。
if(something==true){do something}else if(something==false){do other thing}else{do other}
因此,正如您所看到的,如果某个代码为真,将输入if,如果某个代码为假,将输入else if。因此,您永远不会使用最后一个else代码。要处理这一问题,您应该查看Prava或魔术师红给出的解决方案。那么我应该使用GET吗?同样,isset函数将返回布尔值,因此您只能得到一个true或false值。知道这一点,您的代码如下所示。
if(something==true){do something}else if(something==false){do other thing}else{do other}
因此,正如您所看到的,如果某个代码为真,将输入if,如果某个代码为假,将输入else if。因此,您永远不会使用最后一个else代码。要解决这一问题,您应该查看Prava或Magichered给出的解决方案。
if(isset($_REQUEST['id'])){
    $id=$_REQUEST['id'];
    $sql = "SELECT * FROM institute WHERE id =$id";
    $result = mysql_query($sql, $db);
    $row = mysql_fetch_array($result);
}
else if(!isset($_REQUEST['id'])){
    $sql = 'SELECT * FROM institute WHERE head_office ="H.O"';
    $result = mysql_query($sql, $db);
    $row = mysql_fetch_array($result);
}
if(count($row)<=0) {
    $sql="SELECT * FROM institute";
    $result = mysql_query($sql, $db);
    $n = mysql_num_rows($result); //counting number of rows
    if($n==0){
        header('Location: '.$setup_page);
    }
    else{
        $sql = 'SELECT * FROM institute ORDER BY id DESC LIMIT 1';
        $result = mysql_query($sql, $db);
        $row = mysql_fetch_array($result);
    }
}