2017-09-23 8 views
0

ブロブタイプを使用してMySQLデータベースに画像を保存しようとしています。私はphpMyAdminから直接アップロードしていますが、うまくいきます。しかし、私のPHPコードでは動作していません。 '\ x89PNG'MySQLデータベースに画像を挿入する

予告:私のデータベースに接続した後、私はコードを使用します。

mysqli_set_charset($Inventory_db, 'utf-8'); 
mysqli_query($Inventory_db,"set names 'utf8'"); 

そして、私はそれを削除するか、mysqli_error方法は

無効なUTF8文字列を返します。 jpg画像を挿入すると、ひどいエラーが表示されます。ここで

は、他のエラーです:

あなたのSQL構文でエラーが発生しています。 \ 0JFIF \ 0 ,, \ 0 \ 0 \ \ 0tExif \ 0 \ 0MM \ 0 * \ 0 \ 0 \ 0 \の近くで使用する正しい構文については、MySQLサーバのバージョンに対応するマニュアルをチェックしてください。 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 '1行目

どうすればよいですか?

+0

データタイプが – Ravi

+1

のテーブル構造を転記します。イメージを取得し、INSERT文を実行するコードを投稿してください。それ以外の場合は、チュートリアルhttps://blogs.oracle.com/oswald/phps-mysqli-extension:storing-and-retrieving-blobsを見つけることができます – fyrye

+1

個人的には、私はデータベースにイメージを保存しません。サーバーのどこかに保存します。私はデータベースにそのパスを保存します。この方法では、データベースはより軽いままです。そのイメージを使用する必要があるときに、データベースからそのパスを取得するのはすばやく簡単です。 – Marco

答えて

1

LOAD_FILE()機能を使用できること。その後、ページがレンダリングされている間、<img src=...>はそれを取得しましょう、どこかにディスク上のファイルを残すようにするのが普通です、ウェブサイトで(... @Marcoが示すように)https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_load-file

INSERT INTO ... (..., blob_col, ...) 
    VALUES 
    (..., LOAD_FILE('/path/to/file'), ...); 

でマニュアルの制限を参照してください。 。

そうしないと、おそらくBase64が最適です。フットプリントを8/6倍に拡大します。

BLOBに挿入するための文字列を作成するために8ビットコードをエスケープするという手間は厄介です。

質問のutf8の内容は無関係です。画像BLOBではなく、TEXTに保存する必要があります(base64などをエンコードしていない限り)。BLOBに保存する必要があります。

関連する問題