サイトの高度な検索ページを作成しました。ローカルホストで実行するとすべてが機能しますが、リモートサーバーに同じページをアップロードすると、phpに機能しない状態があります。
私の考えは、フォームで何もコンパイルされていない場合、ユーザーは使用しているすべての製品を取得するということです
$query = "SELECT * FROM table";
入力の 1 つが何かで満たされていなければ、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) && $a!= NULL) の代わりに !empty を使用しましたが、入力で '0' を取得する必要があり、empty() は 0 を検索する代わりに true を返しました。
すでに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);