Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        2年前关闭。
                                                                                            
                
        
我正在尝试使用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'


我该怎么办?

最佳答案

您也许可以使用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所建议的。

否则,Base64可能是最好的选择。确实将占用空间扩大了8/6。

转义8位代码以构造要插入<img src=...>的字符串的麻烦令人生畏。

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

10-05 21:03
查看更多