2016-06-29 12 views
0

フォーラムを作成中です。現在、ユーザーがプロフィール画像(アバター)を更新できるようにしようとしています。私はBLOBでこれをやろうとしています。私はデータベースに画像を保存することは良い考えではないことを認識していますが、これは単なる自己学習のプロジェクトであり、将来の実生活では考えられないでしょう。PHP/MYSL - BLOBを使用しているユーザーにアバターアップロード機能を作成する

私は現在ありませんデータベースに保存されている画像の問題に出くわすと、次のエラーが発生しています:

私は(はっきり)PHPの初心者くさい午前、誰かが助けることができれば幸いです私はそれがデータベースに画像を保存するために必要なものを理解しています。

私はこのようなイメージを保存することができますか、それとも何らかの理由で外部キーを使用しているユーザー情報にリンクできる完全な別のテーブルが必要かどうかと思います。

以下は、機能と問題に関して私が使用しているmysqlテーブルです。

mysql -> describe users; 
+-----------------+-------------+------+-----+---------+--------------+ 
| Field   | Type  | Null | Key | Default | Extra  | 
+-----------------+-------------+------+-----+---------+--------------+ 
| user_Id   | int(8)  | NO | PRI | NULL |auto_increment| 
| user_name  | varchar(30) | NO |  | NULL |    | 
| user_pass  | varchar(255)| NO |  | NULL |    | 
| user_email  | varchar(255)| NO |  | NULL |    | 
| user_date  | datetime | NO |  | NULL |    | 
| user_level  | int(8)  | NO |  | NULL |    | 
| user_description| varchar(255)| YES |  | NULL |    | 
| user_avatar  | longblob | NO |  | NULL |    | 
+-----------------+-------------+------+-----+---------+--------------+ 
8 rows in set (0.02 sec) 

これは私のeditprofile.phpファイルのコードです。

プロジェクトとdatabseに名前を付けて保存画像を保存の名前と同じディレクトリにあるフォルダに保存しcolumns.Instead、データベース内の画像を保存本当に悪い習慣だ
<?php 
include 'connect.php'; 
include 'header.php'; 

if(!isset($_SESSION['signed_in'])) 
{ 
//the user is not logged in. 
echo 'You must be <a href="/Latest_try/signin.php">Signed in</a> to add an image to your profile.'; 
} 
else 
{ 
if($_SERVER['REQUEST_METHOD']!='POST') 
{ 
echo '<form action="" method="post" enctype="multipart/form-data"> 
Choose Image: <input type="file" name="user_avatar"><br/> 
<input type="submit" name="submit" value="Upload"> 
</form>'; 
} 
else 
{ 
    $query = "INSERT INTO 
         users(user_avatar) 
        VALUES 
         ('" . mysqli_real_escape_string($link, $_POST['user_avatar']) . "', 
           NOW(), 
           '" . $_SESSION['user_id'] . "')"; 

$result=mysqli_query($link, $query); 
if($result===false) 
{ 
    mysqli_error($link); 
} 
    else 
    { 
     echo 'Your avatar has been updated!'; 
    }  
} 
} 
?> 
+0

入力ファイルには、 '$ _FILES ['user_avatar'] ['name']' – Saty

+0

を使用します。ありがとう。 – Richard

答えて

0

ご存じのように、DBに画像を保存することは悪い習慣です。しかし、使用している変数が間違っていることが原因です。以下の文をチェックしてください:

$query = "INSERT INTO 
      users(user_avatar) 
      VALUES 
      ('" . mysqli_real_escape_string($link, $_FILES['user_avatar']['name']) . "', 
      NOW(), 
      '" . $_SESSION['user_id'] . "')"; 

ます。また、このhereについての詳細を参照することができます。

+0

ありがとうございます。この変数 "$ _FILES"に渡って初めて私がこの文字列を必要としないことを意味しますか? ($ _ SERVER ['REQUEST_METHOD']!= 'POST') " – Richard

+0

@リチャードを使って投稿されたページかどうかを確認することができますが、必要であれば' if(count($ _ FILES) > 0 "のように私が答えて共有したリンクに表示されます。 –

+0

@リチャード答えのいずれかが働いていれば、答えとupvoteとしてマーク:) –

0

!!

+0

私はこれ以上のことを認識していますが、学習目的のために私の個人的な意見からBLOBがどのように機能するかを知ることはうれしいでしょう。 – Richard