主要问题是图像文件没有从临时位置移动到新位置。但这没有给出任何错误。并且所有mysql查询都可以正常工作。 Al的html部分也可以使用。
$newFileName = $_POST['filename'];
$imageTitle = $_POST['filetitle'];
$imageDesc = $_POST['filedesc'];
$file = $_FILES['file'];
$fileName = $file['name'];
$fileType = $file['type'];
$fileTempName = $file['temp_name'];
$fileError = $file['error'];
$fileSize = $file['size'];
$fileExt = explode(".",$fileName);
$fileActualExt = strtolower(end($fileExt));
$allowed = array("jpg","jpeg","png");
if(in_array($fileActualExt,$allowed)){
if($fileError === 0){
if($fileSize < 20000000){
$imageFullName = $newFileName . "." . uniqid("",true) . "." . $fileActualExt;
$fileDestination = "../gallery/" . $imageFullName;
include_once 'dbh.inc.php';
if(!empty($imageTitle) || !empty($imageDesc)){
$sqlSelect = "SELECT * FROM gallery;";
$stmt = mysqli_stmt_init($conn);
if(mysqli_stmt_prepare($stmt,$sqlSelect)){
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$rowCount = mysqli_num_rows($result);
$setImageOrder = $rowCount+1;
$sqlInsert = "INSERT INTO gallery(title,description,imgfullname,ordergallery) VALUES(?,?,?,?);";
if(mysqli_stmt_prepare($stmt,$sqlInsert)){
mysqli_stmt_bind_param($stmt,"ssss", $imageTitle,$imageDesc,$imageFullName,$setImageOrder);
mysqli_stmt_execute($stmt);
move_uploaded_file($fileTempName, $fileDestination);
}
}
}
}
}
}
答案 0 :(得分:0)
您的$imageTitle
和$imageDesc
变量在此代码中为空,因为它们从未被赋值。因此,它将不会输入if
语句并移动文件。
答案 1 :(得分:0)
您在这里可能已被否决,因为您对代码实际作用的描述有些含糊。您似乎也没有测试或发布MCVE。例如,为什么要FinalCompany = trim(REGEXP_REPLACE([BracketCompany], '<(.*?)>',' ',1,0,'c'))
来使用全部数据时才显示一个计数(与您描述的问题无关)。
您要处理的文件名是sensibly done,尽管理想情况下,路径应与文档根目录(以及随后由脚本介导的读取访问)无关。
“所有mysql查询均正常工作” 建议执行线程达到 move_uploaded_file(),我们不应该猜测代码的工作方式/诊断方法可能已经跑了。这些“ if”语句中的每一个都应具有“ else”。每个mysqli _ *()调用都应检查返回值。您应该检查move_uploaded_file()的返回值。您还应该检查日志文件中的错误和警告(在确认日志记录机制按预期工作之后)。
粗略浏览代码(我想填充了相关的POST变量),我要查找的下一个位置(返回值和日志之后)是目标目录的权限。