1

我有一种情况,我必须以编程方式进行数据库插入。我有多个表,但这些表的信息顺序是相似的,即在每个表中,id 中的第一个列,第二个是外键,第三个是名称,第四个是 blob,第五个是文本.

我搜索了php doc,发现我可以使用 $objectName[index] 来访问数据库属性。我收到错误

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

错误行在代码上标明

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);
}

我使用 CodeIgniter 作为框架。

4

2 回答 2

3

尝试转换为数组:

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

由于 STDClass 只是一个带有public dynamic variablesand的虚拟容器no 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
于 2013-06-26T07:33:04.443 回答
1

试试这个函数get_object_vars ()

或创建函数以转换为数组

function array_to_object($array)//from CodeIgniter forum
 {
  return (is_array($array)) ? (object) array_map(__FUNCTION__, $array) : $array;
 }
于 2013-06-26T07:41:02.837 回答