当我提交表单时,图像文件不会发送到他的目录。中已成功插入的其余数据。我看了几个教程,我知道我没有使用最简单的方法,但我仍然希望它能起作用,有人能看看吗?
function addData($name, $price, $description, $files)
{
if(!empty($name) || !empty($price) || !empty($description))
{
if($sql = $this->db->prepare("SELECT * FROM products WHERE name= ? LIMIT 1"))
{
$sql->bind_param('s', $name);
$sql->execute();
$sql->store_result();
$sql->fetch();
$numrows = $sql->num_rows;
print_r($numrows);
}
else
{
echo "something is wrong";
}
if($numrows>0)
{
echo 'duplicate, go to <a href="index.php?res=resources&adm=admin&page=inventory.php">same page</a>';
}
else
{
if($insert = $this->db->prepare("INSERT INTO products (name, price, description) VALUES(?, ?, ?)"))
{
$insert->bind_param('sds', $name, $price, $description);
$insert->execute();
}
else
{
echo "failed to prepare";
}
//The uploaden image is sent to temp map
if(is_uploaded_file($files['image']['tmp_name']))
{
$valid_types = array(
"image/gif",
"image/png",
"image/jpeg",
"image/pjpeg",
);
if (in_array($files["file"]["type"], $valid_types))
{
$uploaddir = "./webshop/public/img/content/";
if(move_uploaded_file($files['image']['tmp_name'], $uploaddir."/".$files['image']['name']));
}
//Shows where its stored
echo "Stored in: " . 'C:/xampp/htdocs/webshop/public/img/content/' . $files["file"]["name"];
}
else
{
echo "didnt inserted the damn thing!";
}
}
print_r($files);
}
}
您在move_uploaded_file
中似乎缺少['name']
方面
move_uploaded_file($files['image']['tmp_name'], $uploaddir."/".$files['image']['name']);
还要注意添加在$uploaddir和$files 之间的."/".
在代码$uploaddir/$files['image']
中,您的目标是添加尾部斜杠,然后添加文件名,但是,您没有使用语法来连接字符串。因此,必须在变量之间添加.
。您可以在中添加尾部斜线
$uploaddir = "./webshop/public/img/content/";
这样你就可以做
move_uploaded_file($files['image']['tmp_name'], $uploaddir.$files['image']['name']);
更新:
插入和处理文件时使用If..elseif..
。根据您的逻辑,您准备语句,如果失败,则检查文件。它永远不会两全其美。您需要移除elseif并进行两次单独的检查。
if($insert = ..){}
else{echo "failed to prepare";}
if(is_uploaded_file()){}
您可能希望首先检查上传的文件,移动它,然后插入数据库,如果没有其他问题。然后,如果数据库插入失败,您可以取消链接(删除)文件,因为出现了问题。