PHP 向MySQL数据库插入BLOB数据示例

本文详细介绍使用PHP通过mysqli扩展将二进制大对象(BLOB)数据存储到MySQL数据库的方法,包括创建表、插入数据的具体步骤及代码示例,特别强调了send_long_data函数的正确用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php
$conn = mysqli_connect("localhost","root","root","world");
$conn->query("CREATE TABLE files(id INTEGER PRIMARY KEY AUTO_INCREMENT, data BLOB)");
$stmt = $conn->prepare("INSERT INTO files VALUES(NULL, ?)");
$stmt->bind_param("b", $data);
$file = "test.jpg";
$fp = fopen($file, "r");
$size = 0;
while($data = fread($fp, 1024)){
    $size += strlen($data);
    $stmt->send_long_data(0, $data);
}

if($stmt->execute()){
    print "$file ($size bytes) was added to the files table\n";
} else {
    die($conn->error);
}


运行效果:


数据库的变化:



由于BLOB是二进制数据,只能看到对应行列中的<BLOB>标记,MySQL-Front中如果是图像在下方会有预览,读取这类数据将在下一篇中说明.
注意:send_long_data的原型如下,为什么第1个参数为0,请自已看文档:
$param_nr指示出右边第几个参数和数据相关联,参数从0开始编号
 

/**
 * Send data in blocks
 * @link http://php.net/manual/en/mysqli-stmt.send-long-data.php
 * @param int $param_nr <p>
 * Indicates which parameter to associate the data with. Parameters are
 * numbered beginning with 0.
 * </p>
 * @param string $data <p>
 * A string containing data to be sent.
 * </p>
 * @return bool true on success or false on failure.
 * @since 5.0
 */
public function send_long_data ($param_nr, $data) {}

 需要注意的地方是bind_param("b", $data)中,由于是要存blob数据,第1参数要写b,这个书中有误.书中是s,实测存不进去,改为b以后可以存上.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值