2013-06-26 2 views
1

나는 프로그래밍 방식으로 데이터베이스 삽입을해야하는 상황이 있습니다. 나는 여러 테이블을 가지고 있지만 그 테이블의 정보 순서는 비슷하다. 즉, 각 테이블에서 id의 첫 번째 coulmn이고 두 번째는 foregin 키이고 세 번째는 이름이고 네 번째는 blob이고 다섯 번째는 텍스트이다. .배열 인덱스를 통해 객체의 속성에 액세스

나는 php doc을 검색했고 $ objectName [index]을 사용하여 데이터베이스 속성에 액세스 할 수 있음을 확인했습니다. 오류가 발생했습니다

Cannot use object of type stdClass as array in C:\....php on line ...

에러가 발생한 라인

내가 프레임 워크로 CodeIgniter를 사용하고 코드

private function uploadTemp($databaseObject, $table_name){ 
    $this->load->database(); 
    //get file_contents too; 
    $file_id = $databaseObject[3]; // < Here's where the error appeared 
    $this->db->from('tbl_file')->where('file_id',$file_id); 
    $q = $this->db->get(); 
    $data = $q->row(); 
    $query = "INSERT INTO $table_name VALUES(NULL, '".$databaseObject[2]."','".$data->filecontent."');"; 
    $this->db->query($query); 
} 

에 표시됩니다. 배열에 캐스팅

+0

로 변환하는 함수를 작성 file_id = $ databaseObject [3];'이 오류를 트리거합니까? – VolkerK

+0

@VolkerK 두 번째 줄이 그랬습니다! 그것은 놀랐습니다! – cipher

답변

3

시도 :

$file_id = (array) $databaseObject[3]; 

STDClass이 public dynamic variablesno methods 그냥 더미 컨테이너이므로이,이 배열에 캐스팅에는 문제가 없을 뒤로도한다.

그러나 어떤 경우에는 숫자가 변수 이름을 나타내는 데 사용됩니다.

예 :

$array ; //Is some array created by engines/database handlers. 

$obj = (object) $array ; 

echo $obj->0 ; //Hell it will not work. 
echo $obj[0] ; //The same problem. 

echo $obj->{'0'} ; //PERFECT 
+0

오류가 한 줄 위로 이동합니다. – cipher

+0

지금은 무엇이라고 말합니까? – vikingmaster

+0

같은 오류가 발생했습니다. '$ file_id = .....'로 바뀐다. – cipher

1

가 표시 한 전 라인, 즉`$되지 않습니다 기능 get_object_vars()

을 시도하거나 배열

function array_to_object($array)//from CodeIgniter forum 
{ 
    return (is_array($array)) ? (object) array_map(__FUNCTION__, $array) : $array; 
} 
+0

도움을 주셔서 감사합니다 – cipher

+0

@cipher 당신을 환영합니다 .. –

관련 문제