0

私の問題で助けが必要です。データベースに複数の画像をアップロードしたいと考えています。パスをデータベースに入れ、画像をフォルダーに入れています。アップロードは機能していると思いますが、データベースにパスが表示されると、次のようになります。

projects/projects_past/benefits.pnh

画像の拡張子は、.pngなぜ私がこれを撮っているの.pnhか???

ユーザーに何枚の画像をアップロードしたいか尋ねています。たとえば3なので、同じphpファイルで3つの入力タイプのファイルをアップロードしてアップロードします。送信後、画像をデータベースに挿入する別の 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:&nbsp;'.$temp_num.'</td><td colspan="2"><input type="file" name="image[]" id="image[]" multiple /> </td></tr>';
    $temp_num++;
}
echo '<tr><td colspan="3">&nbsp;</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">&nbsp;</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

?>

これは 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());
}
}

複数の画像をアップロードするためのテーブルがあります image[]

助けや提案があれば、よろしくお願いします!

データベースに書き込む権利があります

MyISAMを使用しています*utf8 general_ci*

私のテーブルのフィールドimagevarchar(500)です

読んでくれてありがとう!!!

4

1 に答える 1

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++;
}
}

また、SQLインジェクション攻撃(ハッカーがtitle_projectまたはファイル名で送信できる卑劣なSQLコード)から保護するためのパスも追加mysql_real_escape_string()しました。$title_project$pics[$i]

于 2012-11-23T15:48:55.660 に答える