MYSQL - пустая строка == 0 проблема (обновляет строку с первичным ключом 0 вместо вставки)

0

на самом деле это уже сработало, и я понятия не имею, что я изменил, чтобы теперь я столкнулся с этой проблемой. Пробовал почти все.

Случай:
У меня есть следующий запрос. Переменная $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 о создании новой строки??? Любая помощь очень ценится!!!! Спасибо вам большое!

Салудос Саша!

  • 0
    если поле первичного ключа авто_инкремент?
Теги:
string
zero

2 ответа

1
Лучший ответ

Вам может потребоваться настроить для вашего основного поля ключа автоматическое увеличение. Ниже приведен пример.

CREATE TABLE tablename (
 id MEDIUMINT NOT NULL AUTO_INCREMENT,
 name CHAR(30) NOT NULL,
 PRIMARY KEY (id)) 
  • 0
    О, МОЯ ГОСПОДЬ ... Я ПОТЕРЯЛ АВТОМОБИЛЬНЫЙ ДОКЛАД ... Я не могу в это поверить ... Хлопнув головой по столу ... Я понятия не имею, как это произошло. Но на самом деле это было главное.
  • 0
    Я ЧУВСТВУЮЩИЙ SOOOOOO Глупый СЕЙЧАС ... Но на самом деле это была самая легкая ошибка, на которую я никогда не смотрел.
Показать ещё 1 комментарий
-1

Я бы предположил, что вам нужно дать ОБНОВЛЕНИЕ ГДЕ?
например:

$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, просто предположите на первый взгляд.

  • 0
    Это приводит к ошибке: у вас есть ошибка в вашем синтаксисе mysql ... Он не принимает пустую строку в предложении where ... THX в любом случае ;-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню