我对一个不会给出的命令有疑问
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>';
> }
> } ?>
>
>
这里的示例结果不会产生错误,因为它有一个默认值
答案 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_ *,这是保护您的应用程序所能做的最少的事情。