PHP脚本错误注意:未定义的变量

时间:2012-11-14 18:26:10

标签: php

我正在编写用于高级搜索的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;
}

错误:

注意:未定义的变量:第90行的FILE_PATH中的关键字
注意:未定义的变量:第90行的FILE_PATH中的auther
注意:未定义的变量:第90行的FILE_PATH中的语言

注意:未定义的变量:第90行的FILE_PATH中的发布者

2 个答案:

答案 0 :(得分: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."";}

答案 1 :(得分:0)

$ keyword / $ auther / etc ..只有在设置了_POST中的相应值时才会被分配。如果没有传入数据,$ key / $ auth / etc ...将为空字符串或null,它将等于0 / null。尝试:

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

和其他的类似。