Пустой вопрос записи в CakePHP - Mysql - PullRequest
2 голосов
/ 14 июля 2011

В моем приложении, несмотря на строгую проверку на стороне клиента и сервера, как-то так получилось, что запись пуста со страницы регистрации пользователя.Все данные являются пустыми, примите значение по умолчанию в моей таблице (например, Пол - Мужской).Это происходит примерно в 1 из 100 регистраций.

Mysql - у меня есть структура, как не ноль для каждого обязательного поля.Тем не менее он вставляет пустое.

Сторона Cakephp - я проверяю, массив данных пуст или нет перед сохранением.

Я буду очень признателен, если кто-нибудь мне поможет.

Спасибозаранее.

1 Ответ

2 голосов
/ 14 июля 2011

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

Если вы хотите предотвратить это, вам нужно написать триггер, например, так:

DELIMITER $$

CREATE TRIGGER bi_table1_each BEFORE INSERT ON table1 FOR EACH ROW
BEGIN
  //this will cause an error and prevent the insertion of an empty gender field.
  //If gender has a default value, the database will insert the default value instead.
  IF new.gender = '' THEN SET new.gender = null;
END $$

DELIMITER ;

В качестве альтернативы вы можете сделать пол перечислимым полом

ALTER table1 
CHANGE COLUMN gender gender ENUM ('M','F');

Ссылки:
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
http://dev.mysql.com/doc/refman/5.5/en/triggers.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...