php - 文件上传 - 违反完整性约束 : 1062 Duplicate entry '1' for key 'PRIMARY

标签 php file-upload yii2 image-uploading yii2-basic-app

我正在尝试使文件上传图像,但结果错误。描述错误如下。

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY'

此代码 Controller

public function actionUpload()
        {
           $model = new \app\models\UserPhoto();
           if (\Yii::$app->request->post()) {
            $model->photo = \yii\web\UploadedFile::getInstance($model, 'photo');
            $model->user_id = \Yii::$app->user->id;
            if ($model->validate()) {
                $saveTo = 'uploads/' . $model->photo->baseName . '.' . $model->photo->extension;
                if ($model->photo->saveAs($saveTo)) {
                    $model->save(false);
                    Yii::$app->session->setFlash('success','Success uploaded !');
                }
            }
        }

        return $this->render('upload', ['model' => $model]);      
        }

最佳答案

您的 SQL 服务器显示:您的 user_photo 中已有另一张照片,其中 user_id = 1,并且您已配置您的 user_photo 表使用 user_id 作为主键,这意味着不允许重复的 user_id

实际上,您已经以每个用户最多可以使用一张照片的方式构建了 user_photo 表。要随后更改照片,请使用 UPDATE 而不是 INSERT。一些流行的数据库具有“upsert”语法,基本上可以一次性执行插入或更新操作,因此如果您的数据库支持该语法,请使用它。

如果您希望用户能够上传多张照片(根据文件名判断),您需要更改您的主键,大概您希望它成为外键 而是确保只有有效的 user_id 可以与照片关联。

关于php - 文件上传 - 违反完整性约束 : 1062 Duplicate entry '1' for key 'PRIMARY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39315780/

相关文章:

php - mysql 删除外键的方法

PHP 图片 uploader 不适用于 Capital JPG 扩展

PHP 无法从 HTML 表单上传文件

javascript - yii2 和负载均衡

javascript - yii2 - 如何在 javascript 中设置 kartik select2 值

php - 有没有办法将ajax数据作为单独的变量而不是完整的HTML获取?

php - 在 cakePHP 中查找具有 Containable 行为的条件

php - 保存、组织和查询产品、选项/标签和类别

php - 如果该人被禁止 php mysql,页面将不会死()

javascript - RNFS.uploadFiles 仅适用于原始上传,不适用于多部分/表单数据