【问题标题】:Unable to Store Base64 Data in MySql Database无法在 MySql 数据库中存储 Base64 数据
【发布时间】:2024-01-02 17:43:01
【问题描述】:

我正在尝试使用 PHP 将 Base64 字符串存储到我的 MySql 数据库中。这是我的代码。

<?PHP
//Store Image
$photoData = $_POST['PhotoData'];

//Database connection details
$db_url = "192.168.1.140";
$db_user_name = "easyblogadmin";
$db_password = "admin";
$db_name = "easyblog";

$con = mysqli_connect($db_url, $db_user_name, $db_password);
$sql = "insert into temptable (photodata) values('$photoData')";

if(mysqli_connect_errno()){
        echo "Failed to Connect Database";
        echo mysqli_connect_errno();
        die();
    } else {
        //Connecting to Application Database
        $db_selected = mysqli_select_db($con, $db_name);
        if(!$db_selected){
            echo "Failed to Connect Application Database";
            die();
        } else {
            if (!mysqli_query($con,$sql)) {
                die('Error: ' . mysqli_error($con));
            }
            mysqli_close($con);
            echo "Successfully Added photo".strlen($photoData);
        }
    }?>

这里的 $photoData 是我的 Base64 编码字符串,我将它存储在我的数据库中。当我试图从数据库中检索这些数据时,我的字符串中的某些数据丢失了。我不明白为什么会这样。谁能帮我吗。

问候。

【问题讨论】:

  • 执行前$sql的内容是什么?
  • 尝试增加数据库中该字段的长度
  • 你的表是什么结构?
  • @lc - 内容是编码为 Base64 的图像
  • 我的数据库表中photodata列的类型是longtext。此表仅包含两个字段 S.No 和 ptotodata。

标签: php mysql string base64


【解决方案1】:

如下所述更改 sql 查询

$sql = "insert into databasename.temptable (photodata) values('$photoData')";

还请确认编码后的值是否有单引号,如果是则替换下面提到的数据。

$photoData =str_replace("'","\'",$_POST['PhotoData']);

【讨论】: