搜索结果空字段

时间:2013-07-30 19:47:15

标签: php mysql pagination webpage-screenshot

我对一个不会给出的命令有疑问

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

2 个答案:

答案 0 :(得分:1)

如果$ searchtext不为null,您只想运行查询。

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

请记住,正如您现在所拥有的那样,您正在寻求SQL注入攻击。请使用PDO并绑定值。

答案 1 :(得分:1)

如果我理解正确,这应该会有所帮助:

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

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

观看

请不要再使用mysql_ *函数,而是切换到mysqli_ 函数或PDO。 mysql _ 不推荐使用php 5.5,php&gt; = 5.5不支持。 除此之外,我应该提一下,你的脚本很容易被mysql注入。在将值插入数据库查询之前始终转义值!

我的代码示例包含函数mysql_real_escape_string,就像我告诉你的那样弃用了。如果您坚持使用mysql_ *,这是保护您的应用程序所能做的最少的事情。