php - 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
}
}
解决方案
推荐阅读
- python - 尝试从数据框中删除以“@”开头的子字符串,然后删除具有相同用户名和文本的列
- css - 如何分解 Material UI 样式对象中的常见规则?
- django - 令牌授权 Django {"detail":"未提供身份验证凭据。"}
- node.js - Jest 使用 spyOn 模拟嵌套函数,但仍调用实际函数
- python - 给定一串数字,返回奇数/偶数或偶数/奇数交替的最长子字符串
- go - 如何在使用 Web 套接字的 POST 请求后执行 GET 请求
- react-native - react-native-push-notification - 本地通知不适用于 Android
- node.js - Heroku Postgres Typeorm 迁移
- smartcard - 解码 BER TLV
- sql - 为部门和员工编写 Postgres SQL 查询