2013-07-30 147 views
0

我有一个命令的问题不会给搜索中获得结果空字段

Notice: Undefined index: q in C:\xampp\htdocs\Capstone - Copy\index.php on line 118

即使该字段为空我为这是唯一的问题,该网站的代码在那里,如果我不在我的搜索中没有放置一个值,它会给出这个错误,我可以删除当我重新加载站点时得到的值,所以它只会给出默认输出,即整行和图片,我会把打印屏幕该网站的屏幕截图是该网站的默认视图。

> <?php 
> 
>      $searchtext = $_GET['q']; 
> 
> 
>       $per_page =5; 
>       $pages_query = mysql_query("SELECT COUNT('PersonID') FROM persons"); 
>       $pages = ceil(mysql_result($pages_query,0)/$per_page); 
> 
>       $page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1; 
>       $start = ($page - 1) * $per_page; 
> 
> 
> $query=mysql_query("select * from persons where firstname like 
> '%$searchtext' or lastname like '%$searchtext' order by date desc 
> LIMIT $start,$per_page ");   while($test = mysql_fetch_array($query)) 
>   { 
>    $id = $test['PersonID']; 
> 
> 
> 
>         echo"<div class = content />"; 
>    echo"<img height=200 width=200 src='upload/". $test['Image'] ."'/>"; 
>    echo"" .$test['LastName']." "; 
>    echo"". $test['MiddleName']. " "; 
>    echo"". $test['FirstName']. ""; 
>    echo"<right> <a href ='view.php?PersonID=$id'>Edit</a></right>"; 
>    echo"<right> <a href ='del.php?PersonID=$id'>Delete</a></right>"; 
>         echo"</div>"; 
> 
> 
> 
>   } 
>    if ($pages >=1 && $page <= $pages) { 
>       for ($x=1; $x<=$pages; $x++) { 
>       echo ($x == $page) ? '<strong><a href="?page='.$x.'">'.$x.' </a></strong> ' : '<a 
> href="?page='.$x.'">'.$x.' </a>'; 
>       } 
>       } ?> 
> 
> 

screen shot screenshot2

,这里是不会给一个错误的样本结果,因为有一个默认值

screenshot 3

回答

1

你想只运行查询,如果$ SEARCHTEXT不为null。

$searchtext = ''; 
if(isset($_GET['q'])) $searchtext = $_GET['q']; 
if($searchtext) { 
    //run query 
    //display results 
} else { 
    //display normal page 
} 

请记住,正如您现在这样做,您需要SQL注入攻击。请使用PDO并绑定值。

+0

如果$ searchText为null,他希望运行该查询。他的查询将返回所有失踪人员! –

1

那么,如果我理解正确的话,你这个应该有所帮助:

更改此:$searchtext = $_GET['q'];

这样:$searchText = isset($_GET['q']) ? mysql_real_escape_string($_GET['q']) : "";

WATCH OUT

请不要使用mysql_ *函数并且切换到mysqli_功能或PDO。 mysql_与php 5.5弃用,并不会被php> = 5.5支持。 除此之外,我应该提到,你的脚本对于mysql注入来说是脆弱的。在将数据插入数据库查询之前,请务必避开您的值!

我的代码示例包含功能mysql_real_escape_string,这就像我告诉你弃用。如果你坚持使用mysql_ *,这至少可以保护你的应用程序。

相关问题