我的问题需要帮助。我想在我的数据库中上传多个图像。我将路径放在我的数据库中,将图像放在一个文件夹中。我认为上传工作正常,但如果我在数据库中看到路径,它看起来像这样:
projects/projects_past/benefits.pnh
图片的扩展名应为.png
为什么我要拍这个.pnh
???
我问用户您要上传多少张图片?例如3, 所以我在同一个php文件中给他三个输入类型的文件来上传它们。提交后,有一个重定向到另一个php,我将图像插入数据库。
第一个php文件包含以下代码:
if($submit_num_images)
{
echo "<form action='img_projects.php?num_images=".$num_images."' enctype='multipart/form-data' method='post' name='form3' id='form3'>";
$temp_num = 0;
while($temp_num != $num_images){
echo '<tr><td>Choose image number: '.$temp_num.'</td><td colspan="2"><input type="file" name="image[]" id="image[]" multiple /> </td></tr>';
$temp_num++;
}
echo '<tr><td colspan="3"> </td></tr>';
echo '<tr><td> Choose the Project that related to the images </td>
<td colspan="2">';
$titles = mysql_query("SELECT * FROM projects");
echo '<select name="title_project">';
$count = 0;
while($values_titles = mysql_fetch_assoc($titles)) {
echo'<option value="'.$values_titles['id_project'].'">"'.$values_titles['title'].'"</option>';
$count++;
}
echo '</tr>';
echo '<tr><td colspan="3"> </td></tr>';
echo '<tr><td colspan="3"><input type="hidden" name="img_insert" id="img_insert" value="1" /></td></tr>';
echo '<tr><td colspan="3" align="center"> <input type="submit" name="submit_project_image" value="Submit the images of a project" id="submit_project" /></td></tr>';
}
echo '</table>';
echo '</form>';
} // end insert 2
?>
这是第二个php文件:
for($i=0; $i<$num_images; $i++){
if($_FILES['image']['name'][$i] == "") {
//header('Location:controlpanel.php?insert=2&msg=0');
}
else {
$pics.$j = "projects/projects_past/".$_FILES['image']['name'][$i];
move_uploaded_file($_FILES['image']['tmp_name'][$i], $pics.$j);
$j++;
$query = mysql_query('INSERT INTO img_projects (id_project,image) VALUES ("'.$title_project.'","'.$pics.$j.'") ') or die(mysql_error());
}
}
我有一张多上传图片图片[]
任何帮助或建议,我将不胜感激!
我有权在我的数据库中写作
我正在使用 MyISAM ,* utf8 general_ci *
我的表格中的字段image
是 varchar(500)
感谢您的阅读!
答案 0 :(得分:0)
我不确定您要使用$pics.$j
尝试完成什么,但它不会按预期执行,尤其是当您尝试分配给它时$pics.$j = "projects/projects_past/".$_FILES['image']['name'][$i];
)。只需单独使用$pics
;变量将在for循环的每次迭代中被覆盖,因此您不需要每次都尝试创建一个新变量。如果你想跟踪循环后使用的多个$pics
路径,那就会使$ pics成为一个数组:
$pics = array();
$j = 0;
for($i=0; $i<$num_images; $i++){
if($_FILES['image']['name'][$i] == "") {
//header('Location:controlpanel.php?insert=2&msg=0');
}
else {
$pics[$j] = "projects/projects_past/".$_FILES['image']['name'][$i];
move_uploaded_file($_FILES['image']['tmp_name'][$i], $pics[$j]);
$query = mysql_query('INSERT INTO img_projects (id_project,image) VALUES ("'.mysql_real_escape_string($title_project).'","'.mysql_real_escape_string($pics[$j]).'") ') or die(mysql_error());
$j++;
}
}
我还为mysql_real_escape_string()
和$title_project
路径添加了$pics[$i]
以防止SQL注入攻击(黑客可以在title_project或文件名中发送的偷偷摸摸的SQL代码)。