2012-03-01 17 views
2

私はファイルをサーバにアップロードできるサイトで働いています。ファイルに情報を挿入する対応するmysql idに名前を変更しようとしています。

これはうまく機能しますが、ファイルをアップロードするたびに、最後にアップロードされたファイルに上書きされます。オーバーロードされたプロパティUploadsController :: $データの間接的な変更は効果がありません[APP:

この

はこれらが私のサイト上でoccuringしているエラー、

お知らせ(8)されている私のコード

function uploadFile() { 
    $file = $this->data['Upload']['file']; 
    $pid = mysql_insert_id(); 
    if ($file['error'] === UPLOAD_ERR_OK) { 
     if (move_uploaded_file($file['tmp_name'], APP.'webroot/files/uploads'.DS."$pid.mp4")) { 
      $this->data['Upload']['name'] = $file['name']; 
      $this->data['Upload']['eventname'] = $file['evetname']; 
      $this->data['Upload']['description'] = $file['description']; 
      return true; 
     } 
    } 
    return false; 
} 

です(8):オーバーロードされたプロパティの間接的な変更UploadsController :: $ dataには何もありません(8):未定義のインデックス:eventname [APP/Controller/uploads_controller.php、line 59] 効果[APP/Controller/uploads_controller.php、行59] (8):オーバーロードされたプロパティの間接的な変更UploadsController :: $ dataは効果がありません。[APP/Controller/uploads_controller.php、line](8):未定義のインデックス:description [APP/Controller/uploads_controller.php、line 60] 60]

本当に何が起こっているのですか? また、mysql_insert_id()の代わりにmysqli_insert_id()関数を使用する必要がありますか?私は実際にmysqli_insert_id()がどのように動作するかわかりません。

+0

私のフォームからの情報はデータベースに入力されているので、データがデータベースにアップロードされたとき、$ dataが意味することは何の意味もありません。しかし、アップロードされたファイルを上書きし続けるので、ファイルのアップロードは機能しません。 – 001221

答えて

6

$this->dataは、Cake 2.0でのみ読み込まれています。 Cake 2.0で導入された新しいCakeRequestオブジェクトを使用する必要があります。

したがって$this->dataは、$this->request->dataとなります。

mysql_insert_id()については、データをデータベーステーブルに保存する場所がわかりません。 Cakeは最後に挿入したレコードのid$this->ModelName->idに保存しているので、これも使用できます。

+0

こんにちは私は言ったように、今私はこれらのエラーを得る 通知(8):非オブジェクト[APP/Controller/uploads_controller.php、行55]のプロパティを取得しようとしている 通知(8):未定義のインデックス: (2):file_put_contents(/ Applications/XAMPP/xamppfiles/eventname)[アプリケーション/ XAMPP/xamppファイル/イベント名] [APP 59 [CORE/Cake/Log/Engine/FileLog.php、line 69] – 001221

+0

Imを使用しています。 mysql_insert_id関数は、フォームを使ってアップロードしたファイルのファイル名をSQLテーブルの対応するフィールドに変更したいので、そのエントリのID番号が32の場合、ファイル名は32.mp4に変更されます – 001221

+0

あなたが列挙したエラーは '$ this-> request-> data'配列に存在しないキーを要求したことに由来します。あなたは 'debug()'呼び出しの中に入れて配列の内容を見ることができます。 '$ this-> ModelName-> id'はmysql_insert_id()のエイリアスです。 – mensch