PHP Foreach循环:仅向表中插入一次

时间:2018-07-05 20:49:41

标签: php mysql foreach

我有一个图像上传脚本,我想在其中将数据插入2个表中。

表:将在其中插入描述,品牌,年份的礼服 表格:我在其中插入dress_id和图片链接的图片

我有一个foreach循环-在第一个循环中-衣服和第一个图像应插入,在第二个循环中,...仅将图像循环到表图像。

这可能吗?我正在使用mysql_insert_id()甚至可能吗?

谢谢您的帮助和建议!

亲切的问候,斯蒂芬

到目前为止,这是我的代码。

foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){

    $file_name = $key.$_FILES['files']['name'][$key];
    $file_size =$_FILES['files']['size'][$key];
    $file_tmp =$_FILES['files']['tmp_name'][$key];
    $file_type=$_FILES['files']['type'][$key];
    if($file_size > 400097152){
        $errors[]='Maximale Filegröße: 100MB';
}


    $file_name = 'image_' . date('Y-m-d-H-i-s') . '_' . uniqid() . '.jpg';
    $url = 'dresses/' . $_POST['jahr']. '/';
    $link = $domain . '/dresses/' . $_POST['jahr'] . '/'. $file_name;


    $name_insert = mysql_real_escape_string($_POST['name']);
    $brand_insert = mysql_real_escape_string($_POST['brand']);
    $style_insert = mysql_real_escape_string($_POST['style']);
    $jahr_insert = mysql_real_escape_string($_POST['jahr']);
    $desc_insert = mysql_real_escape_string($_POST['desc']);


    mysql_query("SET CHARACTER SET 'utf8'");
    $sql_upload="INSERT into dresses (model,brand,style,jahr,beschreibung) VALUES('$name_insert','$brand_insert','$style_insert','$jahr_insert','$desc_insert')";   
    $result = mysql_query($sql_upload,$db);

    $dress_id = mysql_insert_id();

    $sql_image = "Insert into images (dress_id, url) VALUES ('$dress_id','$link')";
    $result = mysql_query($sql_image, $db);


    $desired_dir= $url;
    if(empty($errors)==true){
        if(is_dir($desired_dir)==false){
            mkdir("$desired_dir", 0755, true);      // Create directory if it does not exist
        }
        if(is_dir("$desired_dir/".$file_name)==false){
            move_uploaded_file($file_tmp,"$desired_dir/".$file_name);
            $source_img = "$desired_dir/".$file_name;
            $destination_img = $desired_dir."/".$file_name;
            $d = compress($source_img, $destination_img, 50);
        }else{                                  // rename the file if another one exist
            $new_dir="$desired_dir/".$file_name.time();
             rename($file_tmp,$new_dir) ;
        }

1 个答案:

答案 0 :(得分:0)

首先,正如Aleks G所说,停止使用mysql_并开始使用PDO或mysqli和准备好的语句。

第二,重新处理您的处理。收集您的着装信息,插入着装信息,获取对它的引用,然后遍历文件数组。没有理由将礼服插入处理置于处理文件的循环中

基本上,将这段代码移至foreach开始之前-

$name_insert = mysql_real_escape_string($_POST['name']);
$brand_insert = mysql_real_escape_string($_POST['brand']);
$style_insert = mysql_real_escape_string($_POST['style']);
$jahr_insert = mysql_real_escape_string($_POST['jahr']);
$desc_insert = mysql_real_escape_string($_POST['desc']);


mysql_query("SET CHARACTER SET 'utf8'");
$sql_upload="INSERT into dresses (model,brand,style,jahr,beschreibung) VALUES('$name_insert','$brand_insert','$style_insert','$jahr_insert','$desc_insert')";   
$result = mysql_query($sql_upload,$db);

$dress_id = mysql_insert_id();

// start foreach after this