You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP在本地网页展示外部MySQL数据库中的MP4视频

解决MySQL数据库中MP4视频在本地网站展示的问题

首先明确两种常见的视频存储场景,对应不同的处理方式:

场景1:数据库location字段存储的是视频的可访问URL

如果你的videos表中location字段存的是视频文件的公开可访问地址(比如第三方存储的URL、视频所在服务器的直连路径),直接将该值赋值给video标签的src属性即可,同时注意转义避免安全问题:

修改网页代码中的循环部分:

while($row = mysqli_fetch_assoc($fetchVideos)){
    // 转义特殊字符,防止XSS注入风险
    $location = htmlspecialchars($row['location'], ENT_QUOTES);
    echo "<div>";
    echo "<video src='{$location}' controls width='320px' height='200px'></video>";
    echo "</div>";
}

场景2:数据库存储的是视频二进制BLOB数据

如果videos表中直接将MP4文件以BLOB类型存储(而非URL),需要单独写一个PHP脚本来读取二进制数据并输出,再让video标签指向这个脚本:

步骤1:创建get-video.php脚本

<?php
include("config.php");

// 校验视频ID参数,防止SQL注入
$videoId = isset($_GET['id']) ? intval($_GET['id']) : 0;
if($videoId === 0){
    header("HTTP/1.1 400 Bad Request");
    exit;
}

// 预编译查询,避免SQL注入
$query = mysqli_prepare($con2, "SELECT location FROM videos WHERE id = ?");
mysqli_stmt_bind_param($query, "i", $videoId);
mysqli_stmt_execute($query);
$result = mysqli_stmt_get_result($query);
$row = mysqli_fetch_assoc($result);

if(!$row || empty($row['location'])){
    header("HTTP/1.1 404 Not Found");
    exit;
}

// 设置HTTP头,告知浏览器这是MP4视频
header("Content-Type: video/mp4");
header("Content-Length: " . strlen($row['location']));
// 输出视频二进制数据
echo $row['location'];
mysqli_close($con2);
?>

步骤2:修改原网页的循环代码

while($row = mysqli_fetch_assoc($fetchVideos)){
    $videoId = intval($row['id']);
    echo "<div>";
    echo "<video src='get-video.php?id={$videoId}' controls width='320px' height='200px'></video>";
    echo "</div>";
}

注意事项

  • 跨域问题:如果视频存储服务器和你的localhost存在跨域限制,可通过上述PHP脚本代理请求规避。
  • 性能优化:直接从数据库读取BLOB视频会占用大量数据库资源,大文件建议优先存储为外部URL,而非BLOB。
  • 安全防护:始终对用户输入参数做校验和转义,防止SQL注入、XSS等攻击。
  • 免费数据库限制:freesqldatabase.com有存储容量和带宽上限,大体积视频可能无法正常存储或访问。

内容的提问来源于stack exchange,提问作者xero764

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 16:10:32