PHP未定义索引 - 排序

问题描述 投票:1回答:3

它基本上显示来自mysql数据库的数据并使用

$sortby = $_GET['sort'];

而我得到的错误是

Notice: Undefined index: sort in /home/4507408/public_html/list.php on line 8

这是完整的代码,任何想法? (第8行是$ sortby = $ _GET ['sort'];)

谢谢你看:)

<?php
$dbhost = 'localhost';
$dbuser = 'CU4507408';
$dbpass = 'adamadam1';
$dbname = 'CU4507408';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die("Error connecting to        database");
mysql_select_db($dbname);
$sortby = $_GET['sort'];
?>

多数民众赞成在页面顶部

<table border="1">

    <tr>
        <th><a href="list.php?sort=name">Product Name:</a></th>
        <th><a href="list.php?sort=price">Price £</a></th>
        <th><a href="list.php?sort=manufacturer">Manufacturer</a></th>
        <th><a href="list.php?sort=rating">Rating</a></th>
        <th><a href="list.php?sort=categoryname">Category</a></th>
    </tr>
    <?php
    $query = "SELECT p.productID, p.name, p.price, p.manufacturer, p.rating, c.categoryname FROM product p INNER JOIN category c WHERE p.categoryID=c.categoryID ORDER BY $sortby ASC;";
    $result = mysql_query($query) or die("failed!");
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        ?>
        <tr>

            <td><a href="link.php?productID=<?= $row['productID'] ?>"><?= $row['name'] ?></a></td>
            <td><?= $row['price'] ?></td>
            <td><?= $row['manufacturer'] ?></td>
            <td><?= $row['rating'] ?></td>
            <td><?= $row['categoryname'] ?></td>
        </tr>
<? } ?>
php mysql
3个回答
4
投票

试试:

$sortby = isset($_GET['sort']) ? $_GET['sort'] : 'default_value';

此外,如果您使用与$_GET一起传递的变量,则必须检查它是否不是在查询中注入某些内容的值。好的做法是:

$sortbyValues = array('price', 'manufacturer', 'rating', 'categoryname');
$sortby = isset($_GET['sort']) && in_array($sortby, $sortbyValues) ? $_GET['sort'] : 'default_value';

1
投票

由于未在配置文件上设置索引,因此会出现问题。您可以使用以下任何选项:

 @$sortby = $_GET['sort'];

 $sortby = isset($_GET['sort']) ? $_GET['sort'] : 'default_value';

0
投票

从代码中删除此行

 $sortby = $_GET['sort'];

在代码顶部添加此代码

 if (isset($_GET['sort']) && !empty($_GET['sort'])) {
        $sortby = $_GET['sort']; 
    }else{  
       /*in case value of $_GET['sort'] is not retrieved, Action can be done for error handling here. */
    }
© www.soinside.com 2019 - 2024. All rights reserved.