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
相关产品推荐
相关产品推荐

