php - 使用存储过程、php和mysqli将图像/longblob上传到mysql数据库

标签 php mysql mysqli blob

I am attempting to upload a image to my database, i know it is bad practice to upload images to the database. I have it working by running the query in my php class (DB Handler). Now I am attempting to use a stored procedure and can't seem to find my error in my stored procedure. Apologies if my question seems vague.

数据库处理程序.php

public static function Business_Logo_Upload($image)
    {
        $sp = 'CALL uspBusines_Logo_Upload(?)';
        return DBHelper::BlobUpload($sp,$image);
    }

DBHelper.php

public static function BlobUpload($query,$image)
    {
        //Open Connection
        $conn = DB::Connect();
        //Prepare Query
        $call = $conn->prepare($query);
        $null = null;
        $call->bind_param('b', $null);
        $call->send_long_data(0, file_get_contents($image));
        $call->execute();
        //Close Connection
        mysqli_close($conn);
        //Return Result
        return $call;
    }

MYSQL存储过程

CREATE DEFINER=`BIT1`@`%` PROCEDURE `uspBusines_Logo_Upload`(IN logo LONGBLOB)
BEGIN
    DECLARE errno INT;
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
    GET CURRENT DIAGNOSTICS CONDITION 1 errno = MYSQL_ERRNO;
    SELECT errno AS MYSQL_ERROR;
    ROLLBACK;
    END;

    START TRANSACTION;
    SET autocommit=0;

    UPDATE business
    SET business.Logo = logo
    WHERE business.BusinessID = 1;
END

最佳答案

CREATE DEFINER=`BIT1`@`%` PROCEDURE `uspBusines_Logo_Upload`(IN logo LONGBLOB)
BEGIN
    UPDATE business
    SET business.Logo = logo
    WHERE business.BusinessID = 1;
END

This is the solution. Had to remove the transaction.

关于php - 使用存储过程、php和mysqli将图像/longblob上传到mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51762026/

相关文章:

php - 虽然循环 PHP get_result 不工作

asp.net - 编辑数据库条目

php - Mysqli 查询没有返回任何结果

php - 处理多个地点 ID 技巧

php - 将自定义数据发送至 PayPal 并在交易完成后取回

php - 如何在双引号内使星形图标变大

mysql - 从 Phpmyadmin 恢复数据库

javascript - 谷歌地图 - 具有独特信息窗口的多个标记

php - Symfony2 DoctrineMongoDBBundle 一对多双向引用

php - $_POST 未正确传递到 mysqli 查询(没有错误,我看到我的值通过但不会绑定(bind))