我为我的网站创建了一个高级搜索页面。当我在本地主机上运行时一切正常,但是当我在远程服务器上上传相同的页面时,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;
}
最初我使用 !empty 而不是 (isset($a) && $a!= NULL) 但我需要在输入中获取 '0' 并且 empty() 返回 true 而不是搜索 0。
我已经尝试过is_null(), !==NULL, !=false, !$a
ecc 但没有任何效果。
有什么建议吗?
我不明白为什么它在 localhost 中有效,但在远程服务器中无效,php 版本是一样的。
谢谢!
编辑1:
如果我 vardump ($a) 当我 leacve 它未填充我得到这个:
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);