복붙노트

[SQL] 주의 : 정의되지 않은 인덱스 [중복]

SQL

주의 : 정의되지 않은 인덱스 [중복]

$thread_id = (isset($_GET['id']));
$thread_id = intval($_GET['id']);

$q = mysql_query("SELECT * FROM threads WHERE id = $thread_id");

당신은 하나 개의 변수에 두 가지 기능을 사용할 수 없습니다 ?? 그 설정하지만 여전히 저를주는 경우에 당신은 내가 확인해 볼 수 있듯이 :

주의 사항 : 정의되지 않은 인덱스 : C에서 ID : \ WAMP \ www가 \ bfhq \ thread.php 라인 7

해결법

  1. ==============================

    1.이 시도:

    이 시도:

    $thread_id = isset($_GET['id']) ? intval($_GET['id']) : 0;
    

    어느 같이 판독 "$ _GET는 [ 'ID']를 설정하고, 설정 한 경우에 $ thread_id INTVAL ($ _ GET [ 'ID'), 그렇지 않은 경우 0으로 설정"

  2. ==============================

    2.TRUE / FALSE :는 isset ()는 부울 값을 반환합니다. 당신이 결정하려면 여부 $ _GET [ "ID가"]로 설정되어있는 경우는 IF 문에 그렇게 할 필요가있다, 또는 삼항 연산자를 통해.

    TRUE / FALSE :는 isset ()는 부울 값을 반환합니다. 당신이 결정하려면 여부 $ _GET [ "ID가"]로 설정되어있는 경우는 IF 문에 그렇게 할 필요가있다, 또는 삼항 연산자를 통해.

    if (isset($_GET["id"])) {
      $thread_id = $_GET["id"]; // Bad idea taking values in from $_GET directly
    } else {
      die("Thread id not set");
    }
    
  3. ==============================

    3.이 오류는 php.ini 파일에서 오류 / 경고 수준 설정에 따라 달라집니다. 그것의 좋은 방법은 사용하는 ...

    이 오류는 php.ini 파일에서 오류 / 경고 수준 설정에 따라 달라집니다. 그것의 좋은 방법은 사용하는 ...

    array_key_exists('id', $_GET);
    

    http://us2.php.net/manual/en/function.array-key-exists.php

    또한 : 당신이 그렇게하기 전에 당신은 $ _GET에서 해당 입력을 소독합니다. 당신은 자신이 MySQL의 주입에 열 떠날거야.

  4. ==============================

    4.당신은 단순히 error_reporting은 (4)를 사용하여 모든 통지 제거 할 수 ;. 또 다른, 어쩌면, 방법은 원유하지만 작업 통지를 억제하고 변수가 될 수 살균하기 :

    당신은 단순히 error_reporting은 (4)를 사용하여 모든 통지 제거 할 수 ;. 또 다른, 어쩌면, 방법은 원유하지만 작업 통지를 억제하고 변수가 될 수 살균하기 :

    $thread_id = (int)@$_GET["id"];
    

    당신이 이런 일을 많이 할 경우, 당신은 아마 (예. GET_INT ( "아이디")) filter_var 살펴보고 ()와 별도의 함수로 모두에게 기능을 넣고 싶습니다.

  5. from https://stackoverflow.com/questions/1023099/notice-undefined-index by cc-by-sa and MIT license