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

<?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以后可以存上.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值