원인: "알림:초기화되지 않은 문자열 오프셋"이 표시됩니까?
사용자가 작성하는 양식이 있으며, 양식에는 "프로젝트 이름", "프로젝트 날짜", "카테고리" 등의 동일한 필드가 여러 개 있습니다.사용자가 제출하는 양식 수에 따라 다음을 수행하는 것이 목표입니다.
- 서식 수를 반복합니다.
- 개별 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
변수의 철자가 틀립니까?
이는 어레이 중 하나가 실제로 어레이가 아니라는 것을 의미합니다.
그런데, 당신의 if 체크는 불필요합니다.$varsCount가 0이면 for 루프가 실행되지 않습니다.
어레이를 반복하는 횟수가 어레이의 실제 크기보다 클 경우 오류가 발생할 수 있습니다.예:
$one="909";
for($i=0;$i<10;$i++)
echo ' '.$one[$i];
오류가 표시됩니다.첫 번째 경우 당신은 i의 모드를 취할 수 있습니다.예를들면
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
'programing' 카테고리의 다른 글
ES6 화살표 기능과 함께 jQuery $(이) 사용(이 바인딩은 어휘) (0) | 2023.09.02 |
---|---|
엔디안 불가지론자 C/C++ 코드를 작성하는 방법은? (0) | 2023.09.02 |
다른 테이블의 데이터로 mysql 테이블 업데이트 (0) | 2023.09.02 |
MySQL 점 유형의 좌표 검색 (0) | 2023.09.02 |
A잭스가 bootstrap-select와 함께 작동하지 않음 (0) | 2023.09.02 |