на самом деле это уже сработало, и я понятия не имею, что я изменил, чтобы теперь я столкнулся с этой проблемой. Пробовал почти все.
Случай:
У меня есть следующий запрос. Переменная $DB-id является пустой строкой, если содержимое, которое я хочу сохранить, является новым. Поле module_id - это мой первичный ключ. Случается, что этот запрос всегда обновляет строку с помощью module_id = > 0.
Проблема
Передача пустой переменной в качестве первичного ключа всегда обновляет строку 0 вместо того, чтобы вставлять новую.
$this->db->query("INSERT INTO modules_text
(
module_id,
module_content,
module_page_idx,
module_post_id
)
VALUES (
'{$DB_id}',
'{$content['text']}',
'{$content['idx']}',
'{$post_id}'
)
ON DUPLICATE KEY
UPDATE module_content = '{$content['text']}',
module_page_idx = '{$content['idx']}'
");
Есть ли у кого-нибудь идея, как я могу рассказать MYSQL о создании новой строки??? Любая помощь очень ценится!!!! Спасибо вам большое!
Салудос Саша!
Вам может потребоваться настроить для вашего основного поля ключа автоматическое увеличение. Ниже приведен пример.
CREATE TABLE tablename (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id))
Я бы предположил, что вам нужно дать ОБНОВЛЕНИЕ ГДЕ?
например:
$this->db->query("INSERT INTO modules_text
(
module_id,
module_content,
module_page_idx,
module_post_id
)
VALUES (
'{$DB_id}',
'{$content['text']}',
'{$content['idx']}',
'{$post_id}'
)
ON DUPLICATE KEY
UPDATE `module_content` = '{$content['text']}',
`module_page_idx` = '{$content['idx']}'
WHERE
`module_id` = '{$content['id']}'
");
Не держите меня за это xD, просто предположите на первый взгляд.