ProgramingTip

원인 :“알림 : 초기화되지 않은 것”이 나타 납니까?

bestdevel 2020. 12. 25. 10:27
반응형

원인 :“알림 : 초기화되지 않은 것”이 나타 납니까?


사용자가 작성하는 양식이 양식에 "프로젝트 이름", "프로젝트 날짜", "도시"등과 같은 필드가 여러 개 있습니다. 사용자가 성장하는 양식 수에 따라 제 목표는 :

  1. 양식 수를 반복하다
  2. SQL 삽입 문 생성

하지만 PHP는 내가 이해하지 못하는 것 같은 알림을 던집니다.

주의 :

알림 : 초기화되지 않은 시스템 : 1 ... dataPasser.php on line 90

PHP

$myQuery = array();

if ($varsCount != 0)
{
  for ($i=0; $i <= $varsCount; $i++)
  {
    $var = "insert into projectData values ('" . $catagory[$i] . "', '" .  $task[$i] . "', '" . $fullText[$i] . "', '" . $dueDate[$i] . "', null, '" . $empId[$i] ."')";
    array_push($myQuery, $var);     
  }
}

이 문제에 대한 내용이 있고 추론하는 데 어려움이 있습니다. 배열이 초기화되지 않은 원인을 이해하는 데 도움을 주시면 감사하겠습니다.


이 오류는 다음 변수가 실제로 어디에 있습니까 배열 대신 null 인 경우 발생합니다 $var[$i].

$catagory
$task
$fullText
$dueDate
$empId

간단히 말해, 삽입 쿼리의 모든 것입니다.

아마도 $catagory변수의 철자가 틀렸습니까?


그것은 당신의 배열 중 하나가 실제로 배열이 아님을 의미합니다.

귀하의 경우 체크는 선택합니다. $ varsCount가 0이면 루프는 어쨌든 실행되지 않습니다.


배열을 반복하는 횟수가 배열의 실제 크기보다 클 때 오류가 있습니다. 예를 들면 :

 $one="909";
 for($i=0;$i<10;$i++)
    echo ' '.$one[$i];

오류가 표시됩니다. 첫 번째 경우에는 i ..의 mod를 사용할 수 있습니다.

function mod($i,$length){
  $m = $i % $size;
  if ($m > $size)
  mod($m,$size)
  return $m;
}

for($i=0;$i<10;$i++)
{
  $k=mod($i,3);
  echo ' '.$one[$k];
}

(아마도 값이 배열처럼 배열이 아닐 수도 있습니다).

$k = 2;
$k[0];

사용하기 전에 배열을 테스트하고 초기화하십시오.

if( !isset($catagory[$i]) ) $catagory[$i] = '' ;
if( !isset($task[$i]) ) $task[$i] = '' ;
if( !isset($fullText[$i]) ) $fullText[$i] = '' ;
if( !isset($dueDate[$i]) ) $dueDate[$i] = '' ;
if( !isset($empId[$i]) ) $empId[$i] = '' ;

$catagory[$i]존재하지 않는 경우 (초기화되지 않은) 하나를 생성합니다. 그게 전부입니다. => PHP는 주소의 테이블을 읽으려고 시도 $i하지만이 주소에는 아무것도없고이 주소는 존재하지 않습니다. => PHP는 알림을 반환하고 문자열에 아무것도 넣지 않습니다. 따라서 코드가 매우 깨끗하지 않으며 서버 성능을 저하시키는 리소스가 약간 필요합니다 (아주 조금만).

MySQL 테이블 기본값에주의

if( !isset($dueDate[$i]) ) $dueDate[$i] = '0000-00-00 00:00:00' ;

또는

if( !isset($dueDate[$i]) ) $dueDate[$i] = 'NULL' ;

배열의 내용을 확인하십시오.

echo '<pre>' . print_r( $arr, TRUE ) . '</pre>';

참조 URL : https://stackoverflow.com/questions/1263636/what-causes-notice-uninitialized-string-offset-to-appear

반응형