Вложенные множества при добавлении nod get error

Я использую класс для вложенного набора php, и когда я хочу добавить новый узел, я получаю сообщение об ошибке,

Fatal error: Uncaught exception 'Exception' with message 'SafeMySQL: Duplicate entry '0' for key 'PRIMARY'. Full query: [INSERT INTO test_sections SET `section_name`='accebt',`section_left`='55',`section_right`='56',`section_level`='1']' in C:\xampp\htdocs\easy_b\shop_admin\db_tree\safemysql.class.php:607 Stack trace: #0 C:\xampp\htdocs\easy_b\shop_admin\db_tree\safemysql.class.php(429): SafeMySQL->error('Duplicate entry...') #1 C:\xampp\htdocs\easy_b\shop_admin\db_tree\safemysql.class.php(59): SafeMySQL->rawQuery('INSERT INTO tes...') #2 C:\xampp\htdocs\easy_b\shop_admin\db_tree\DbTree.class.php(215): SafeMySQL->query('INSERT INTO ?p ...', 'test_sections', Array) #3 C:\xampp\htdocs\easy_b\shop_admin\db_tree\examples\dbtree_demo.php(236): DbTree->Insert(0, Array) #4 {main} thrown in C:\xampp\htdocs\easy_b\shop_admin\db_tree\safemysql.class.php on line 607

Мой код выглядит следующим образом, и я ищу ошибку, но я ничего не нашел, вы можете мне помочь? Спасибо

public function Insert($parentId, $data = array(), $condition = '')
{
$node_info = $this->GetNode($parentId);

$right_id = $node_info[$this->tableRight];
$level = $node_info[$this->tableLevel];

$condition = $this->PrepareCondition($condition);

$sql = 'UPDATE ' . $this->table . ' SET ';
$sql .= $this->tableLeft . '=CASE WHEN ' . $this->tableLeft . '>' . $right_id . ' THEN ' . $this->tableLeft . '+2 ELSE ' . $this->tableLeft . ' END, ';
$sql .= $this->tableRight . '=CASE WHEN ' . $this->tableRight . '>=' . $right_id . ' THEN ' . $this->tableRight . '+2 ELSE ' . $this->tableRight . ' END ';
$sql .= 'WHERE ' . $this->tableRight . '>=' . $right_id;
$sql .= $condition;
$this->db->query($sql);

$data[$this->tableLeft] = $right_id;
$data[$this->tableRight] = $right_id + 1;
$data[$this->tableLevel] = $level + 1;

$sql = 'INSERT INTO ?p SET ?u';
$this->db->query($sql, $this->table, $data);

$node_id = $this->db->insertId();

return $node_id;
}

1

Решение

Я только что решил, проблема была в БД, я должен автоматически увеличить идентификатор. СПАСИБО

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]