将图像插入MySQL数据库

时间:2017-09-23 15:01:28

标签: php mysql utf-8

我正在尝试使用blob类型将图片保存在MySQL数据库中。当我直接从phpMyAdmin上传它时它工作正常。但在我的PHP代码中,它无法正常工作。 mysqli_error方法返回

  

无效的utf8字符串:'\ x89PNG'

注意:连接到我的数据库后,我使用代码:

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

当我删除它或插入jpg图像时,它也告诉我一个可怕的错误!

这是另一个错误:

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'???? \ 0JFIF \ 0,\ 0 \ 0 ?? \ 0tExif \ 0 \ 0MM \ 0 * \ 0 \ 0 \ 0 \附近使用正确的语法第1行0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0J \ 0 \ 0 \ 0'

我该怎么办?

1 个答案:

答案 0 :(得分:1)

可以能够使用LOAD_FILE()功能。请参阅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'), ...);

(正如@Marco建议的那样......)对于网站,将文件留在某处的磁盘上是正常的,然后在呈现页面时让<img src=...>获取它。

否则,Base64可能是最好的选择。它确实将占地面积扩大了8/6。

转义8位代码以构造用于插入BLOB的字符串的麻烦令人生畏。

问题中的utf8内容无关紧要。图像必须存储在BLOB中,而不是TEXT中(除非您已将其编码为base64或其他内容)。