0

高度な検索用の PHP スクリプトを作成していますが、エラーが発生しました。コードを助けてください:

$key    = $_GET['key'];
$auth   = $_GET['auth'];
$lang   = $_GET['lang'];
$pub    = $_GET['pub'];

if(isset($key) OR isset($auth) OR isset($lang) OR isset($pub))
{
    if ($key    != NULL){$keyword   = "AND (native_name LIKE '%".$key."%' OR unique_name LIKE '%".$key."%')";}
    if ($auth   != 0)   {$auther    = "AND auth_id=".$auth."";}
    if ($lang   != 0)   {$language  = "AND lang_id=".$lang."";}
    if ($pub    != 0)   {$publisher = "AND pub_id=".$pub."";}

    $search_query = "SELECT native_name from books WHERE status=1 ".$keyword." ".$auther." ".$language." ".$publisher."";
    print $search_query;
}

Error:

Notice: Undefined variable: keyword in FILE_PATH on line 90
Notice: Undefined variable: auther in FILE_PATH on line 90
Notice: Undefined variable: language in FILE_PATH on line 90
Notice: Undefined variable: publisher in FILE_PATH 行 90

4

2 に答える 2

1

if ステートメントを使用して変数を作成している場合、これらの変数が作成されない可能性があります。

あなたの場合には、いくつかの異なるオプションがあります。

1、三項構文を使用する

$keyword = $key != NULL ? "AND (native_name LIKE '%".$key."%' OR unique_name LIKE '%".$key."%')" : "";
$author = $auth !=0 ? "AND auth_id=".$auth : "";
$language = $lang !=0 ? "AND lang_id=".$lang : "";
$publisher = $pub !=0 ? "AND pub_id=".$pub : "";

2, 変数を事前定義する

$keyword = "";
$author = "";
$language = "";
$publisher = "";

if ($key    != NULL){$keyword   = "AND (native_name LIKE '%".$key."%' OR unique_name LIKE '%".$key."%')";}
if ($auth   != 0)   {$auther    = "AND auth_id=".$auth."";}
if ($lang   != 0)   {$language  = "AND lang_id=".$lang."";}
if ($pub    != 0)   {$publisher = "AND pub_id=".$pub."";}
于 2012-11-14T18:32:56.820 に答える
0

$keyword/$auther/etc.. _POST の対応する値が設定されている場合にのみ割り当てられます。データが渡されない場合、$key/$auth/etc... は空の文字列または null になり、0/null と等しくなります。試す:

if ($key != null) {
   $keyword = ...;
} else {
   $keyword = some default value;
}

他のものについても同様です。

于 2012-11-14T18:28:53.247 に答える