2016-04-14 14 views
-2

画像を(PHPを使用して)データベース(phpMyAdmin)にアップロードしようとすると大きな問題が発生します。デバッギングさえ(eclipseを使用して)私はすべてうまく見えます。 コードを実行すると、イメージがアップロードされ、SQLクエリが起動され、イメージがtmp-folderから移動されます。しかし、私のデータベースには何もありません。イメージをデータベースにアップロードできないのはなぜですか?

if (isset($_FILES['upload']) && $_FILES['upload']['size'] > 0) { 
    $file = $_FILES['upload']['tmp_name']; 
    $name = $_FILES['upload']['name']; 
    $type = $_FILES['upload']['type']; 
    $size = $_FILES['upload']['size']; 

    if (is_uploaded_file($file)) { 
     $data = file_get_contents($file); 
     $img->uploadImg($size, $type, $name, $data); 
    } 
    $older = getcwd() . '/image/'. basename($name); 
    move_uploaded_file($_FILES['upload']['tmp_name'], $folder); 
} 

そして:

public function uploadImg($size, $mimetype, $filename, $code) { 
      try { 
       $sql = "INSERT INTO img_table(fileName, size, mimetype, code) VALUES ($filename, $size, $mimetype, $code)"; 
       $this->db->exec($sql); 
      } 
      catch (PDOException $e) { 
       echo $sql.' '.$e->getMessage(); 
      } 
} 

私が間違っているの場所を教えてくださいするために、任意のアイデアやヒントここでは、コードです。私はどんな提案にも開放的です。

+1

PHPMyAdmin *はデータベースではありません。これは、あなたのMySQLデータベースのためのWebインターフェイスです。 –

+1

あなたのPHPコードにエラー報告を追加するには、 'error_reporting(E_ALL);を追加してください。 ini_set( 'display_errors'、 '1'); 'スクリプトの先頭には何が返されますか? –

+3

文字列値の引用符を使用する必要があります – devpro

答えて

0

問題は、クエリの文字列値を引用しなかったことです。イメージはバイナリなので、エスケープする必要もあります。

しかし、これらの問題をすべて回避するには、準備されたステートメントを使用することです。

public function uploadImg($size, $mimetype, $filename, $code) { 
    try { 
     $sql = "INSERT INTO img_table(fileName, size, mimetype, code) VALUES (:filename, :size, :mimetype, :code)" 
     $stmt = $this->db->prepare($sql); 
     $stmt->execute(array(
      ':filename' => $filename, 
      ':size' => $size, 
      ':mimetype' => $mimetype, 
      ':code' => $code); 
    } catch (PDOException $e) { 
     echo $sql.' '.$e->getMessage(); 
    } 
} 
+0

'@ Barmar'それは仕事をしません。 'イメージをエスケープしなければならないのはどういう意味ですか?' – carl

+0

'$ code'にはプレーンテキストではなくバイナリデータが含まれています。 SQLクエリー文字列に直接入れることはできません。 – Barmar

+0

エラーメッセージが表示されますか? – Barmar

関連する問題