【问题标题】:Error MySQL when update a tableMySQL 更新表时出错
【发布时间】:2014-06-02 08:36:05
【问题描述】:

我有一个问题: 我的数据库中有 2 个表:

articles:
id  useid  title
users
id  name  surname

我的看法:

 Author<select name="author" id="author">
                            <?php foreach ($users as $u): ?>
                                <option value="<?php $u['id'] ?>" <?php if($u['id']==$a['userid']): ?> selected="selected" <?php endif ?> style="width:300px"><?php echo $u['name'] ?> <?php echo $u['surname'] ?></option>
                            <?php endforeach; ?>
        </select>
        <p><b>Content:</b></p>
        <textarea name="content" id="content" style="width:605px; height: 300px;" rows="200"><?php echo $a['content']; ?></textarea>

我的控制器:

$this->db->query("UPDATE articles SET title='$title',userid='$author' WHERE id=$aid" );

当我这样做时,我收到错误 1452:无法添加或更新子行:外键约束失败(myblog.articles,CONSTRAINT articles_ibfk_1 FOREIGN KEY (userid) REFERENCES admindetailsid)在更新级联时删除级联) 请大家帮帮我....

【问题讨论】:

  • 错误消息似乎确切地说明了问题是什么:更新后的articles.userid 与任何admindetails.id 值都不匹配......列/关系名称似乎“奇怪” ”。 (另见stackoverflow.com/questions/60174/…
  • 在问题的开头,您说您的表名为users,但您的错误消息表明userid 引用了一个名为admindetails 的表。这是两个不同的表吗?是否有可能您设置了引用错误表的外键?

标签: php mysql sql codeigniter-2


【解决方案1】:
<option value="<?php $u['id'] ?>" <?php if($u['id']==$a['userid']): ?> selected="selected" <?php endif ?> style="width:300px"><?php echo $u['name'] ?> <?php echo $u['surname'] ?></option>

你的回声语句在哪里..

输入&lt;option value="&lt;?php echo $u['id']; ?&gt;" 而不是",这就是密钥重复的原因,每次它都会采用相同的值,即NULL.. 改一下就好了。

【讨论】:

    【解决方案2】:

    在这种情况下,这意味着您的 $author 变量包含 admindetails 表中不存在的 id(如果它是一个数字)

    【讨论】:

    • 用户存在此id
    • 我制作:$author=$this->input->post('author');
    • 您的用户表的名称是什么?是“管理详细信息”吗?正如@GarethD 提到的,如果您的用户表不是“admindetails”,则外键可能是错误的
    • 我在选项值中发现了我必须写的错误 :)
    猜你喜欢
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多