gpt4 book ai didi

php - 在 CodeIgniter 中处理数据库错误

转载 作者:可可西里 更新时间:2023-11-01 00:10:46 24 4
gpt4 key购买 nike

我在执行数据库查询时遇到以下错误:

Error Number: 1062

Duplicate entry '1' for key 1

INSERT INTO `message_template` (`id`, `name`, `subject`, `detail`, `type`,
`status`, `create_date`)
VALUES (1, 'adaa', '', 'dss', 'SMS', 'Active', '2011-08-25 19:34:08')

Filename: C:\AppServ\www\ci\system\database\DB_driver.php

Line Number: 330

如何获取错误编号(例如 1062)来处理错误?

谢谢

最佳答案

这是来自数据库的错误。

你可以隐藏在/application/config/database.php

$db['default']['db_debug'] = FALSE; 

否则,您可能需要处理它。我建议只检查该值是否已经存在:

$this->db->where('id', $id);
$query = $this->db->get('message_template');

$data = array(
'id' => $id,
'name' => $name,
'subject' => $subject,
'detail' => $detail,
'type' => $type,
'status' => $status,
'create_date' => $create_date
);

if($query->num_rows() > 0)
{
// the line already exists, so update
$this->db->where('id', $id);
$this->db->update('message_template', $data);
}
else
{
$this->db->insert('message_template', $data);
}

或者,如果您愿意使用原始查询,那应该会稍微快一些(我不会真的担心按 ID 搜索)

$sql = "INSERT INTO message_template 
(id, name, subject, detail, type, status, create_date)
VALUES (1, " + $this->db->escape($name) + ", " + $this->db->escape($subject) + ", " + $this->db->escape($detail) + ", " + $this->db->escape($type) + ", " + $this->db->escape($status) + ", " + $this->db->escape($create_date) + ")
ON DUPLICATE KEY UPDATE name=" + $this->db->escape($name) + ", subject=" + $this->db->escape($subject) + ", detail=" + $this->db->escape($details) + ", type=" + $this->db->escape($type) + ", status=" + $this->db->escape($status) + ", create_date=" + $this->db->escape($create_date) + ";";

否则,请查看 DataMapper ORM ,因此您的所有数据库事务都会自动处理。

关于php - 在 CodeIgniter 中处理数据库错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7190446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com