Php:$ var!= NULL无法正常工作的远程服务器

时间:2013-10-22 08:08:26

标签: php mysql

我为自己的网站创建了一个高级搜索页面。所有工作当我在localhost上运行但当我在远程服务器上传相同的页面时,php中的条件不起作用。

我的想法是,如果在表单中没有编译任何用户使用

获取所有产品
$query = "SELECT * FROM table";

除非其中一个输入填充了某些东西,否则它会添加WHERE子句和我需要的查询部分。

这是我的代码:

public function fetch_this($a, $b, $c, $d){
        $search_connection = new Search_connection();//connect to database
        $query = "SELECT * FROM table";
        if ((isset($a) && $a!= NULL) or (isset($b) && $b!= NULL) 
            or (isset($c) && $c!= NULL) or (isset($d) && $d!= NULL)){
            $query.=" WHERE ";
        }
        $contatore = 0;

        if(isset($a) && $a!= NULL){
            $query.= "((a<= '$a' and b>= '$a') or a LIKE '$a')";
            $counter++; 
        }


            //... same for b c d 

           $search_connection->connetti();
           $res = mysql_query($query);
           return $res;
}

最初我用过!而不是(isset($ a)&amp;&amp; $ a!= NULL)但是我需要在输入中得到'0'并且empty()返回true而不是搜索0。

我已经尝试了is_null(), !==NULL, !=false, !$a ecc,但没有任何作用。

有什么建议吗?

我无法理解为什么它在localhost中工作但在远程服务器中不工作,php版本是相同的。

谢谢!

编辑1:

如果我vardump($ a)当我将它解开时,我得到了这个:

localhost: string(0) ""
remoteserver: bool(false) 

如果我在输入中输入0:

localhost: string(1) "0"
remoteserver:bool(false)

这是问题所在。

启动该功能的代码是:

$a= mysql_real_escape_string($_GET['a']);
    $b= mysql_real_escape_string($_GET['b']);
    $c= mysql_real_escape_string($_GET['c']);
    $d= mysql_real_escape_string($_GET['d']);

    $res = $single_query->fetch_this($a, $b, $c, $d);

2 个答案:

答案 0 :(得分:0)

isset如果为NULL则返回false,因此不需要第二个条件。

但是如果空字符串,则isset返回true,所以请检查它。

 if ( isset($a) && $a != '')

更新

您可以简单地采用不同的方法并检查查询中的值:

SELECT * FROM table
WHERE
('$a' <> '' AND 
( (a <= '$a' AND b >= '$a') OR a LIKE '$a')
);

现在,如果搜索参数为空或NULL,则会在

时使WHERE子句短路

'$a' <> ''

返回false。

答案 1 :(得分:-3)

只需尝试这个

if(isset($a) || ($a!= NULL)){