我使用带有mysql的wamp服务器并添加了以下代码
但它没有将文件插入数据库 它在数据库中创建名称,在wamp文件夹中创建tmp文件,但不将其移动到所需目录
看看代码
<form method="post" action="insert_products.php" enctype="multipart/form-data">
<table>
<tr>
<h2>Pleaset INPUT data to Insert Into database</h2>
</tr>
<tr>
<th scope="col">Title</th>
<td><input type="text" name="ptitle"></td>
</tr>
<tr>
<th scope="col">catagory</th>
<td><select name="pcats">
<option>Select A Catagory</option>
<?php
$get_cats = "select * from catagories";
$query =mysqli_query($conn,$get_cats)or die("Error: ".mysqli_error($conn));
while($get_cats = mysqli_fetch_array($query)){
$cat_id = $get_cats['cat_id'];
$cat_title = $get_cats['cat_title'];
echo " <option value='$cat_id'>$cat_title</option>";
}
?>
</select></td>
</tr>
<tr>
<th scope="col">Brand</th>
<td><select name="pBrands">
<option>Select A Brand</option>
<?php
$get_brands = "select * from brands";
$query =mysqli_query($conn,$get_brands)or die("Error: ".mysqli_error($conn));
while($get_brands = mysqli_fetch_array($query)){
$brand_id = $get_brands['brand_id'];
$brand_title = $get_brands['brand_title'];
echo "<option value='$brand_id'>$brand_title</option>";
}
?>
</select></td>
</tr>
<tr>
<th scope="col">IMG1</th>
<td><input type="file" name="pimg1"></td>
</tr>
<tr>
<th scope="col">IMG2</th>
<td><input type="file" name="pimg2"></td>
</tr>
<tr>
<th scope="col">IMG3</th>
<td><input type="file" name="pimg3"></td>
</tr>
<tr>
<th scope="col">Price</th>
<td><input type="text" name="pprice"></td>
</tr>
<tr>
<th scope="col">description</th>
<td><textarea name="pdesc"></textarea></td>
</tr>
<tr>
<th scope="col">keywords</th>
<td><input type="text" name="pkws"></td>
</tr>
<tr>
<th scope="col">save / Update</th>
<td><input type="submit" name="insert_product" value="Upload / Update"></td>
</tr>
</table>
</form>
概念代码
...
if(isset($_POST["insert_product"])){
// datat text variable to insert product details into database
$pTitle = $_POST['ptitle'];
$pCats = $_POST['pcats'];
$pbrands = $_POST['pBrands'];
$pPrice = $_POST['pprice'];
$pDesc = $_POST['pdesc'];
$pKWS = $_POST['pkws'];
$status = 'on';
// product images data container to transfer images rrelated data to database
$pIMG1 = $_FILES['pimg1']['name'];
$pIMG2 = $_FILES['pimg2']['name'];
$pIMG3 = $_FILES['pimg3']['name'];
//temporary images variables
$temp_pIMG1 = $_FILES['pimg1']['tmp_name'];
$temp_pIMG2 = $_FILES['pimg2']['tmp_name'];
$temp_pIMG3 = $_FILES['pimg2']['tmp_name'];
if($pTitle == '' OR $pCats =='' OR $pbrands =='' OR $pPrice == '' OR $pDesc =='' OR $pKWS=='' or $pIMG1=='') {
echo "<script>alert('Please fill all the fields')</script>";
exit();
}else{
$uploads_dir = APP_PATH . DIRECTORY_SEPARATOR. '/pro_images/';
if(is_uploaded_file($temp_pIMG1) or is_uploaded_file($temp_pIMG2) or is_uploaded_file($temp_pIMG3) ){
move_uploaded_file($temp_pIMG1,"$uploads_dir/$pIMG1");
move_uploaded_file($temp_pIMG2,"$uploads_dir/$pIMG2");
move_uploaded_file($temp_pIMG3,"$uploads_dir/$pIMG3");
}else{
echo"error in file upload ";
}
$insert_product = "INSERT INTO products (cat_id,brand_id,date,pTitle,p_Img1,p_Img2,p_Img3,p_price,p_desc,p_status) values ('$pCats','$pbrands',NOW(),'$pTitle','$pIMG1','$pIMG2','$pIMG3','$pPrice','$pDesc','$status')";
$run_products = mysqli_query($conn,$insert_product) or die('ERROR: '.mysqli_error($conn));
if ($run_products){
echo " <script>alert('Inserted')</script>";
}
}
}
?>
答案 0 :(得分:0)
检查您要上传的文件夹的权限。
应该允许写作。如果它在Web服务器上,则文件夹权限应为0755
答案 1 :(得分:0)
这可能是问题所在。
路径中有2个目录分隔符。所以试试
$uploads_dir = APP_PATH . '/pro_images/';
此外,我希望错误消息包含APP_PATH中的内容而不是文本APP_PATH。你真的把它设定为有价值吗?
测试时试试这个
$uploads_dir = APP_PATH . '/pro_images/';
echo '$uploads_dir = ' . $uploads_dir;
答案 2 :(得分:0)
嗨,大家好,感谢各位的支持。
我发现的唯一问题是我的浏览器缓存错误的图像位置,这是相互矛盾的
更多关注以下内容 $ uploads_dir = APP_PATH。 '/ pro_images /'; 强> 我删除了 APP_PATH 修改后的代码如下:
$ uploads_dir ='。/ pro_images /';
它在实现这个之前解决了这个问题,我重新启动了我的电脑。
全部谢谢