-4

並べ替え機能を追加すると、コードに未定義のインデックス エラーが発生するのはなぜですか? これらは私が得ているエラーです

注意: 未定義のインデックス: 58 行目の C:\xampp\htdocs\how are things\admin panel\view.php のソート

注意: 未定義のインデックス: 61 行目の C:\xampp\htdocs\how are things\admin panel\view.php の並べ替え

注意: 未定義のインデックス: 64 行目の C:\xampp\htdocs\how are things\admin panel\view.php の並べ替え

注意: 未定義のインデックス: 67 行目の C:\xampp\htdocs\how are things\admin panel\view.php の並べ替え

注意: 未定義のインデックス: 70 行目の C:\xampp\htdocs\how are things\admin panel\view.php の並べ替え

Notice: 未定義のインデックス: sort in C:\xampp\htdocs\how are things\admin panel\view.php 行 73

注意: 未定義のインデックス: sort in C:\xampp\htdocs\how are things\admin panel\view.php 行 76

これは、58 61 64 67 70 73 76 行のコードです。

$result = "SELECT * FROM customers";
    if($_GET['sort'] == 'first_name'){
     $result .= " ORDER BY first_name";
    }
   else if($_GET['sort'] == 'last_name'){
     $result .= " ORDER BY last_name";
    }
     else if($_GET['sort'] == 'address'){
     $result .= " ORDER BY address";
    }
     else if($_GET['sort'] == 'phone_number'){
     $result .= " ORDER BY phone_number";
    }
     else if($_GET['sort'] == 'email'){
     $result .= " ORDER BY email";
    }
     else if($_GET['sort'] == 'city'){
     $result .= " ORDER BY city";
    }
     else if($_GET['sort'] == 'country'){
     $result .= " ORDER BY country";
    }
$result = mysql_query($result) or die(mysql_error());
4

3 に答える 3

1

sort値を確認する前に、インデックスが存在するかどうかを最初に確認しているわけではありません。

次のように書いてみてください。

if (isset($_GET['sort'])) {
    switch ($_GET['sort']) {
        case 'first_name':
            $result .= ' ORDER BY first_name';
            break;
        case 'last_name':
            $result .= ' ORDER BY last_name';
            break;

        // etc...
    }
}

余談ですが、mysql_*関数は非推奨です。PDOの使用を検討してください。

于 2013-04-15T17:58:32.810 に答える
0

あなたが得ている「エラー」は、実際にはエラーではありません。それらは通知です。これは、何か問題がある可能性があることを PHP が通知していることを意味します。

この場合、PHP は、$_GET-array でアクセスしようとしている変数が存在しないことを通知しています。

これにはいくつかの方法があります。

  • 問題が発生した場合に通知しないように PHP に指示します。

    //From this point on, show all errors except notices.
    error_reporting(E_ALL ^ E_NOTICE);
    

    ただし、実際にコードを修正することをお勧めします。

  • 他の多くの回答で指摘されているように、最初に実際に存在するかどうかを確認することで、コードが存在しない変数にアクセスしようとするのを防ぐことができます。

    //Checks for the existence of any variable.
    isset($_GET['sort']);
    
    //Check if the specified array has a given key.
    array_key_exists('sort', $_GET);
    

    どちらも機能します。

あなたの場合、@Omar Jackman によって与えられた答えはエレガントな解決策です。

于 2013-04-15T18:23:08.330 に答える