问题
I'm running into this error with my database saying that I have some issue with an array:
Database Error
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Array' in 'field list'
SQL Query: UPDATE `mongexc_cake214`.`configurations` SET `id` = 1, `username` = 'bill clinton', `profession` = 'president', `description` = 'Ob Jones-D is a Thai Massage and Electronic Acupuncture Specialist. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quam, repellat optio officiis neque ea repudiandae sint corrupti illo? Maiores adipisci mollitia quae perferendis numquam minima deserunt ratione placeat rem. Numquam?', `tel_mobile` = '000-000-0000', `address` = '000 new york of africa V99 999', `userphoto` = Array WHERE `mongexc_cake214`.`configurations`.`id` = '1'
Notice: If you want to customize this error message, create app/View/Errors/pdo_error.ctp
This is part of my edit.php file with the field userphoto for image file upload
<?php echo $this->Form->create('Configuration', array('type' => 'file')); ?>
<fieldset>
<legend><?php echo __('Edit Configuration'); ?></legend>
<?php
echo $this->Form->input('id');
echo $this->Form->input('username');
echo $this->Form->input('profession');
echo $this->Form->input('description', array('type' => 'textarea','label' => 'Content of this Article', 'rows' => '10', 'cols' => '120'));
echo $this->Form->input('userphoto', array('type' => 'file'));
echo $this->Form->input('tel_mobile');
echo $this->Form->input('address');
?>
</fieldset>
<?php echo $this->Form->end(__('Submit')); ?>
回答1:
userphoto
is a file field, it will contain data similar as:
$this->request->data['Configuration']['userphoto'] = array(
'error' => …,
'name' => …,
…
)
Which means it is an array.
But in your code, you are directly inserting an array to your database. You need to handle the file upload explicitly.
Check out Best practice to upload files in CakePHP
回答2:
$imageData = exif_imagetype($this->request->data['Foo']['image']['tmp_name']);
image_type_to_mime_type($imageData);
switch ($imageData) :
case '2':
$type = '.jpg';
break;
case '3':
$type = '.png';
break;
default:
$type = 'invalid';
break;
endswitch;
$uniq = mt_rand();
move_uploaded_file($this->request->data['Foo']['image']['tmp_name'],'path/to/dir');
$this->request->data['Foo']['image'] = '/path/to/dir/'.$uniq.$type;
来源:https://stackoverflow.com/questions/20989822/cakephp-file-upload-errors