Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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 else块未被调用_Php - Fatal编程技术网

php else块未被调用

php else块未被调用,php,Php,我是php的noob,我花了很多时间试图理解为什么我的else块没有被调用。我尝试了很多东西,但不确定为什么没有人打电话给我。我确信我在做一些愚蠢的事情 <?php $base_url = 'http://localhost/mine/'; $per_page = 3; //number of results to shown per page $num_links = 8; $cu

我是php的noob,我花了很多时间试图理解为什么我的else块没有被调用。我尝试了很多东西,但不确定为什么没有人打电话给我。我确信我在做一些愚蠢的事情

     <?php   
 $base_url = 'http://localhost/mine/';
     $per_page = 3;                           //number of results to shown per page 
     $num_links = 8;   
     $cur_page = 1;                          // set default current page to 1

if(isset($_REQUEST['string'])<>'') 
{
      $search_string = " title LIKE '%".mysql_real_escape_string($_REQUEST["string"])."%' OR description LIKE '%".mysql_real_escape_string($_REQUEST["string"])."%'";
      $query = mysql_query("SELECT * FROM products WHERE ".$search_string);
      $row = mysql_num_rows($query) or die(mysql_error());

      $row = $row; 

      $cur_page = $_GET['page'];
      $cur_page = ($cur_page < 1)? 1 : $cur_page; 
      $offset = ($cur_page-1)*$per_page;                //setting offset

      $pages = ceil($row/$per_page);              // no of page to be created


      $start = (($cur_page - $num_links) > 0) ? ($cur_page - ($num_links - 1)) : 1;
      $end   = (($cur_page + $num_links) < $pages) ? ($cur_page + $num_links) : $pages;

      $res  =   mysql_query("SELECT * FROM products WHERE ".$search_string." ORDER BY title LIMIT ".$per_page." OFFSET ".$offset);  

      while($row=mysql_fetch_array($res))
         {
         include ('form.php');
         }
    }
      else
     include ('alert.php');

    ?>

我忘了补充一点,我正在使用get方法来获取url的链接。所以我认为,即使没有搜索词,也有可能仍然显示index.php?字符串= 这意味着它仍然将if语句视为true,而不是else语句。如果我错了,请纠正我

下面是我的pagination.php中的一个片段

if (strstr($_SERVER['REQUEST_URI'], "?string="))
        {
            echo '<span id="prev"> <a href="' . $_SERVER['PHP_SELF'] . '?string=' . $_GET['string'] . '&page=' . (1) . '">' . $dir . '</a> </span>';
        }
        else
            echo '<span id="prev"> <a href="' . $_SERVER['PHP_SELF'] . '?page=' . (1) . '">' . $dir . '</a> </span>';
if(strstrstr($\u SERVER['REQUEST\u URI'],“?string=“))
{
回声';
}
其他的
回声';
使用

if(isset($\u请求['string']){/*…*/}else{/*…*/}

if($_请求['string']!=''){/*…*/}else{/*…..*/}
(后者可能会在参数
string
根本没有传递的情况下发出警告)


并非像您那样同时使用这两个选项。

尝试使用此选项作为IF的条件:

if(isset($_REQUEST['string']) && trim($_REQUEST['string'])!=''){ ... 

首先,它将检查变量是否存在,如果存在,它将检查变量中是否有一些文本-以防万一,如果条件不正确

isset
返回true或false。它不返回可与空值或引号之间的值进行比较的值

if(!empty($_REQUEST['string'])) 
上面的if语句应该足以检查该值是否已设置以及是否为空\

一些你应该读的东西

isset()有一个布尔返回值

您应该能够在if子句中使用它

if(isset($_REQUEST['string'])) 
{

}
else
{

}
也可以使用数组\键\存在()。看见这实际上并没有检查以确保请求参数具有有用的值

if(array_key_exists('string', $_REQUEST)) 
{

}
else
{

}
empty()将检查数组键、null和no值。这就是我要用的

if(!empty($_REQUEST['string'])) 
{

}
else
{

}

OP的条件也可以写成
if(!isset($\u REQUEST['string'])


编辑: 我之前错了:


PHP的等价物是
=if(isset($\u REQUEST['string'])“”)
应该是
if(isset($\u REQUEST['string'])!=“”)

要理解它为什么不起作用,我们需要将它分成几个部分

首先,将
isset($\u REQUEST['string'])
(它将始终返回布尔值)的值与空字符串进行比较

如果你这样做

var_dump(isset($_REQUEST['string']));
根据是否设置,您应该将
bool(true)
bool(false)
视为输出

但是,当您将布尔值与字符串进行比较时,会将布尔值类型转换为字符串,以便两种类型相同

var_dump( (string) false ); // Outputs string(0) ""
var_dump( (string) true ); // Outputs string(1) "1"
因此,您基本上正在执行以下操作:

// When $_REQUEST['string'] is unset
if ("" <> "") { ... } // Will always be false because "" === ""

// When $_REQUEST['string'] is set
if ("1" <> "") { ... } // Will always be *true* because "1" != ""

但是,我认为您要查找的是,如果变量未设置或为空,则返回false。

可能是这样的,您可以使用
GET
方法

$string = isset($_GET['string']) ? $_GET['string'] : NULL;

if(!empty($string ){
   //your stuff
}

旁注:阅读此链接

尝试添加大括号,如果效果不好,请添加
echo
,以便逐步调试。
是SQL语法。PHP的等价物是
=
因此您的
if(isset($\u REQUEST['string'])“”)
应该是
if(isset($\u REQUEST['string'])!=“”)
当if/else@user602525之后只有一条语句时,不需要大括号,ChoiZ在PHP中工作得非常好。还有!=实际上是100%可互换的。该注释无效。问题是“isset(xyz)”始终为真。可能的解决方案:
如果(!isset(xyz)和&xyz“”)
。更好的解决方案:
如果(!empty(xyz))
如果在类型转换后$a不等于$b,则$a$b不等于TRUE。适用于更多信息
您可以完美地使用该运算符,它不仅仅是SQL语法。PHP也使用它。是的,我现在才注意到@Chosenwann也可以写成
if(!isset($\u REQUEST['string'))
@Fred ii-没错,但我认为OP也希望检查它是否为空,因此仅使用
empty
就足以满足用户的需要。这只满足用户的第一个条件,即检查
$\u REQUEST['string']
设置与否,它不满足他的第二个条件。我假定您的意思是,如果请求参数有任何值。您可能是对的。此处的名称为空()。您混淆了
[]
s和
()
s,并且没有在
字符串前面放置
$
$string = isset($_GET['string']) ? $_GET['string'] : NULL;

if(!empty($string ){
   //your stuff
}