首页 > 解决方案 > Codeigniter - 如何获取为其提供重复值的列名

问题描述

我有一个包含多个唯一字段的表:

table structure
---------------
| id (primary) | key_1 (unique) | key_2 (unique) | key_3 | key_4 (unique) |

等等

在使用db->insert()db->update()Codeigniter 查询构建器类的方法时,我可能会得到任意数量的非唯一值。说为key_1和提供的值key_4是重复的。

Codeigniterdb->error()给了我{code: 1062, message: "Duplicate entry 'xyz' for key 'key_1'"}.

有什么方法可以让我在不对错误消息执行一些子字符串操作的情况下提取引发错误的表字段的名称?

当前方法:

$error = $this->db->error();
if ($error['code'] == 1062) {
    $key = '';
    $message = $error['message'];
    $needle = "'";
    $lastPos = 0;
    while (($lastPos = strpos($message, $needle, $lastPos)) !== false) {
        $positions[] = $lastPos;
        $lastPos = $lastPos + strlen($needle);
    }
    $count = count($positions);
    $length =  $positions[$count - 1] - $positions[$count - 2];
    $key = substr($message, $positions[$count - 2] + 1, $length - 1);
    if($key == 'key_1') {
        // value for field 'key_1' exists in the table
    }
}

标签: phpcodeigniterquery-builder

解决方案


推荐阅读