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

PHP电影流媒体网站admin panel上传视频功能运行报错求助

报错原因及修复方案

你收到的Notice : Trying to get property 'error' of non-object in adminhandler.php on line 33报错,核心原因是代码存在多处逻辑错误,导致SQL执行失败触发异常分支,此时数据库连接对象$con未正常初始化或失效,无法调用error属性。具体修复步骤如下:

1. 修复分类参数接收不匹配问题

前端admin.php的表单中,分类输入框的name属性为category_id,但后台adminhandler.php中用$_POST['categoryId']接收参数,完全取不到有效值,会导致SQL插入字段非法。
修改adminhandler.php中的参数接收代码:

// 替换原有错误代码 $category= strtolower($_POST['categoryId']);
$category = intval($_POST['category_id']);

分类ID为数字类型,用intval转为整型也可以避免SQL注入风险。

2. 修复文件移动函数参数错误

move_uploaded_file的第一个参数必须是上传文件的临时存储路径tmp_name,你当前传入的是原文件名name,系统找不到对应文件会直接返回失败。
修改adminhandler.php中的判断逻辑:

// 替换原有错误判断
// if ($result && move_uploaded_file($_FILES['thumbnail']['name'], $targetCover) && move_uploaded_file($_FILES['preview']['name'], $targetMovie))
if ($result && move_uploaded_file($_FILES['thumbnail']['tmp_name'], $targetCover) && move_uploaded_file($_FILES['preview']['tmp_name'], $targetMovie))

3. 修复报错输出的兼容逻辑

避免$con对象异常时调用属性报错,先判断对象有效性再输出错误信息:

// 替换原有错误输出代码
// echo "<script type='text/javascript'>alert(`Error Uploading Movie! Press Try Again.\n{$con -> error}`)</script>";
$err_msg = '上传视频失败,请重试。';
if(is_object($con) && !empty($con->error)){
    $err_msg .= '\n错误详情:'.$con->error;
}
echo "<script type='text/javascript'>alert('$err_msg')</script>";

额外检查项

  • 先确认config.php中的数据库连接逻辑正常,$con是成功连接后的mysqli对象,连接失败时直接抛出明确错误,避免后续调用失效对象
  • 对字符串类型的输入值做SQL转义,例如用mysqli_real_escape_string($con, $name)处理视频名称字段,避免SQL注入风险
  • 确认../entities/thumbnail/和../entities/previews/目录存在,且授予了读写权限,否则文件移动也会失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:06:04