插入最后一个插入的id时出现问题

omqzjyyz  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(370)

我有:一个数据库,有两个表:reactions和reactionimages。用户可以发布一些图片的React。所以表reactionimages有一个自动递增的id,表reactionimages有一个列叫做:reaction\u id,这样它们就连接起来了。请参见下面的代码,我是如何上传reaction+图片的:

if(isset($_POST['react_btn'])){
            unset($q1);
            $q1['reactie'] = $app->check_string($_POST['editor1']);
            $q1['topic_id'] = $app->check_string($_POST['topicid']);
            $q1['klant_id'] = $app->check_string($_POST['klantid']);
            $q1['ledenpagina_id'] = $app->check_string($_POST['ledenpaginaid']);
            $q1['onderreactie_id'] = $app->check_string($_POST['onderreactieID']);
            $app->insert_query('reacties', $q1, 'id');

            if(!empty($_FILES['files']['name'])){

                foreach($_FILES["files"]["tmp_name"] as $key=>$tmp_name){
                    $file_name=$_FILES["files"]["name"][$key];
                    $file_name = $app->makeurlshop($file_name); 
                    $file_name = $app->check_string($file_name);
                    $file_tmp=$_FILES["files"]["tmp_name"][$key];

                    if(($_FILES['files']['error'][$key] == 1) or ($_FILES['files']['error'][$key] == 2)){
                        echo  '<script>alert("<div class="alert alert-error alert-dismissable">
                            <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
                            <h4><i class="icon fa fa-exclamation-triangle"></i> Mislukt</h4>
                            Je foto is te groot, verklein de foto eerst in bijvoorbeeld paint of photoshop.
                          </div>");</script>';
                    }

                    $gelukt = $app->fotoupload($file_tmp, $file_name, 'assets/images/reactiefotos', 800);

                    if($gelukt == 'ok'){
                        unset($q1);
                        $q1['reactie_id'] = $database->lastInsertId();
                        $q1['foto'] = $file_name;
                        $app->insert_query2('fotoreactie', $q1);

                     } else {
                        echo '<script>alert("'.$gelukt.'");</script>';
                    }
                }
            }
            }

我的问题是:当我上传一个React与2个或更多的图片。第一张图片是正确的Reactid,但是第二张图片是之前上传的图片的id。我知道为什么会这样因为我用 $database->lastInsertId(); 但是,我如何让它工作上传例如2个图像,并得到两个图像得到相同的React\u id?

uubf1zoe

uubf1zoe1#

我会暂时寻求一个基本的解决方案,在 foreach 使变量 $photoUploaded = false; 当您得到最后一个insert id时,将其设置为true,然后使用if语句预先检查它是否为true,如果为true,则使用最后一个insert id。。。像这样:

$photoUpload = false;
foreach($_FILES["files"]["tmp_name"] as $key=>$tmp_name){
    $file_name=$_FILES["files"]["name"][$key];
    $file_name = $app->makeurlshop($file_name); 
    $file_name = $app->check_string($file_name);
    $file_tmp=$_FILES["files"]["tmp_name"][$key];

    if(($_FILES['files']['error'][$key] == 1) or ($_FILES['files']['error'][$key] == 2)){
        echo  '<script>alert("<div class="alert alert-error alert-dismissable">
                     <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
                     <h4><i class="icon fa fa-exclamation-triangle"></i> Mislukt</h4>
                     Je foto is te groot, verklein de foto eerst in bijvoorbeeld paint of photoshop.
    </div>");</script>';
    }

    $gelukt = $app->fotoupload($file_tmp, $file_name, 'assets/images/reactiefotos', 800);

    if($gelukt == 'ok'){
        unset($q1);
        if($photoUpload){
            $q1['foto'] = $file_name;
            $app->insert_query2('fotoreactie', $q1);
        }
        else{
            $q1['reactie_id'] = $database->lastInsertId();
            $q1['foto'] = $file_name;
            $app->insert_query2('fotoreactie', $q1);
            $photoUpload = true;
        }

    } else {
        echo '<script>alert("'.$gelukt.'");</script>';
    }
}
yacmzcpb

yacmzcpb2#

我建议在insert查询之后立即获取最后一个insert id,并将其保存在变量中供以后使用。

3df52oht

3df52oht3#

只需将Reactid放入一个变量中 $app->insert_query('reacties', $q1, 'id'); $reactie_id = $database->lastInsertId(); 然后在循环中使用它。 $q1['reactie_id'] = $reactie_id;

相关问题