私はファイルアップロードでこの奇妙な問題に直面しています。 ファイルをアップロードすると、すべてうまくなります。今ここにSQL配列から文字列への変換エラーcakephp
Notice (8): Array to string conversion [CORE\cake\libs\model\datasources\dbo_source.php, line 749]
Warning (512): SQL Error: 1054: Unknown column 'Array' in 'field list' [CORE\cake\libs\model\datasources\dbo_source.php, line 684]
Query: INSERT INTO `masters` (`candidate_id`, `candidate_name`, `candidate_file_name`) VALUES ('heman', 'He Man', Array)
は私がやっているものです:私は、フォームをアップロードでanyfileのを選択し、提出していない場合しかし、私は次のエラーを取得する私のコントローラで:
アップロードファイルへの呼び出しを行う機能機能:
if ($_FILES['data']['name']['Master'])
{
$this->upload_files();
}
ここでは、ファイルのアップロード機能である:ここで
function upload_files() {
$fcnt = 0;
$vdata = $_FILES['data']['name']['Master'];
echo "Vdata:";
pr($vdata);
foreach ($vdata as $v)
{
$pro_files[] = array(
'name'=>$_FILES['data']['name']['Master']['candidate_file_name'],
'tmp'=>$_FILES['data']['tmp_name']['Master']['candidate_file_name'],
'type'=>$_FILES['data']['type']['Master']['candidate_file_name'],
);
echo "Pro_files:";
pr($pro_files);
$fcnt++;
}
$cnt = 0;
$allowed = array(
'xls','xlsx','db','mbd',
'txt','pdf','doc','docx',
'log','rtf','wpd','wps',
'csv','dat','pps','ppt',
'pptx','sdf','xml','bmp',
'gif','jpg','png','psd',
'thm','tif','svg','sql',
'html','htm','js','php',
'bin','mim','7z','deb',
'gz','pkg','sit',
'sitx','tar.gz','zip',
'zipx','pdf'
);
foreach ($pro_files as $file)
{
$fileType = $file['type'];
$fileType2 = explode('/',$fileType);
$fileName = $file['name'];
$path = 'C:\wamp\www' . '\\' . $fileName;
//if (in_array($fileType2[1],$allowed))
//{
echo "fileName";
pr($fileName);
if (move_uploaded_file($file["tmp"], $path))
{
$this->data['Master']['candidate_file_name'] = $fileName;
}
//}
$cnt++;
}
}
私のデバッグデータがどのように見えるかです:ここでは
Array
(
[Master] => Array
(
[candidate_id] => heman
[candidate_name] => He Man
[candidate_file_name] => Array
(
[name] => test.txt
[type] => text/plain
[tmp_name] => C:\wamp\tmp\php329D.tmp
[error] => 0
[size] => 0
)
)
)
はVDATAがどのように見えるかです:ここ
Array
(
[candidate_file_name] =>
)
は、ファイル名が何もないように出てくる
Array
(
[0] => Array
(
[name] =>
[tmp] =>
[type] =>
)
)
のようにプロファイルがどのように見えるかです。私は問題が何であるかを把握することはできませんよ
Array
(
[data] => Array
(
[name] => Array
(
[Master] => Array
(
[candidate_file_name] =>
)
)
[type] => Array
(
[Master] => Array
(
[candidate_file_name] =>
)
)
[tmp_name] => Array
(
[Master] => Array
(
[candidate_file_name] =>
)
)
[error] => Array
(
[Master] => Array
(
[candidate_file_name] => 4
)
)
[size] => Array
(
[Master] => Array
(
[candidate_file_name] => 0
)
)
)
)
:ここ
は次のようにPR($ _ FILES)がどのように見えるかです。 誰も助けることができますか? あなたのご協力が大変ありがとうございます。 ありがとう、
私はそれがあなたの嘆願でき取得できませんでしたどうして?私はcakephpの初心者です。 –
投稿内のデバッグデータを見てください。 'candidate_file_name'はフォームからのファイル情報の配列として戻ってきています。だからあなたはそれを変更せずにデータベースに保存しようとすると、配列を値として保存しようとしています。それがエラーの原因です。データベースは文字列を要求しています。だから、ファイルをアップロードしてそれをあなたが望むディレクトリに移動したら、 'candidate_file_name'をその場所に更新する必要があります。そうすれば、データベースから後でそれを選択するときに、正しい場所にあるファイルを指し示します。 –
ねえ、これを試しましたが、同じエラーが出るようです。 \t \t \t \t if(!空の($ _ FILES [ 'データ'] [ '名前'] [ 'マスター'])) \t \t \t \t { \t \t \t \t \tエコー "こんにちは"; \t \t \t \t \t $ this-> upload_files(); \t \t \t \t \t echo "hi";他 \t \t \t \t} \t \t \t \t \t \t \t \t {解除 \t \t \t \t \t(の$ this - >要求 - >データ[ 'マスター'] [ 'candidate_file_name'])。 \t \t \t \t –