繁体   English   中英

使用FK在表中插入图像的目录路径[MySQL]

[英]Insert directory path of images in a table with FK [MySQL]

我正在尝试使用PHP-PDO在带有FK(MySQL)的表中插入图像的目录路径,但是我收到此错误:

  • SQLSTATE [23000]:完整性约束违规:1452不能添加或更新子行,外键约束失败( bd-veiculosfotos ,约束fk_fotos_veiculos外键( veiculos_idveiculos )参考mydbveiculosidveiculos )ON DELETE NO ACTION ON UPDATE无动作)

这是我的桌子: 在此处输入图片说明

我正在用php构建CRUD,我有一张包含汽车信息的表格,如下所示: 在此处输入图片说明

我有一个名为“ AddImages”的提交按钮,当我单击它时,我正在通过POST发送要更改的汽车ID,这是我发送的php页面...

uploadimageform.php: 在此处输入图片说明

之后,我选择一些图像,然后单击提交并将信息发送到下一个php代码:

    <?php
    include "dbconfig.php";
    if(isset($_POST['submit'])){
        $id = trim(strip_tags($_POST['id']));

        # INFO IMAGEM
        $file       = $_FILES['img'];
        $numFile    = count(array_filter($file['name']));

        # PASTA
        $folder     = 'uploads';

        # REQUISITOS
        $permite    = array('image/jpeg', 'image/png');
        $maxSize    = 1024 * 1024 * 5;

        # MENSAGENS
        $msg        = array();
        $errorMsg   = array(
            1 => 'O arquivo no upload é maior do que o limite definido em upload_max_filesize no php.ini.',
            2 => 'O arquivo ultrapassa o limite de tamanho em MAX_FILE_SIZE que foi especificado no formulário HTML',
            3 => 'o upload do arquivo foi feito parcialmente',
            4 => 'Não foi feito o upload do arquivo'
        );

        if($numFile <= 0)
            echo 'Selecione uma Imagem!';
        else{
            for($i = 0; $i < $numFile; $i++){
                $name   = $file['name'][$i];
                $type   = $file['type'][$i];
                $size   = $file['size'][$i];
                $error  = $file['error'][$i];
                $tmp    = $file['tmp_name'][$i];

                $extensao = @end(explode('.', $name));
                $novoNome = rand().".$extensao";

                if($error != 0)
                    $msg[] = "<b>$name :</b> ".$errorMsg[$error];
                else if(!in_array($type, $permite))
                    $msg[] = "<b>$name :</b> Erro imagem não suportada!";
                else if($size > $maxSize)
                    $msg[] = "<b>$name :</b> Erro imagem ultrapassa o limite de 5MB";
                else{

                    if(move_uploaded_file($tmp, $folder.'/'.$novoNome)):
                        $msg[] = "<b>$name :</b> Upload Realizado com Sucesso!";
                        $imgpath[] = $folder.'/'.$novoNome;
                        else:
                            $msg[] = "<b>$name :</b> Desculpe! Ocorreu um erro...";
                    endif;
                }

                foreach($msg as $pop)
                    echo $pop.'<br>';
            }
        }
        try
        {
            $sql = "INSERT INTO fotos (tbl_imagecar) VALUES ";

            foreach ($imgpath as $path)
            {
                $sql .= " ('$path'),";
            }

            $sql = substr ($sql,0,strlen ($sql)-1);
            $result = $DB_con->exec($sql);
            echo "Dados criados com sucesso.<br><br>";
        }

        catch(PDOException $e)
        {
            echo $e->getMessage();
        }
    }
?>
<br><br>
<a href="index.php" title="">INDEX</a>
<a href="read.php" title""=>LISTAR</a>

这是我试图用来将信息放入数据库的查询:

INSERT INTO fotos SET `tbl_imagecar` = 'uploads/19350.JPG', `veiculos_idveiculos` = (SELECT idveiculos FROM veiculos WHERE idveiculos = 3

从那里我无法在我的代码中进步。 (对不起,我的英语不好)

您正在获取数据库外键冲突错误。 解决这个问题

mydb.veiculos (idveiculos)

首先需要使用相同的值(例如13232)插入/更新您要插入表字段中的值

bd-veiculos.fotos.veiculos_idveiculos

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM