2011-07-14 16 views
2

私のアプリケーションでは、クライアント側とサーバー側の厳密な検証にもかかわらず、どうにかしてレコードがユーザー登録ページから空になってしまいます。すべてのデータは空白です。私のテーブルのデフォルト値を受け入れます(例:性別 - 男性)。これは100回の登録で約1回発生します。cakephp - Mysqlのブランクレコードの問題

Mysql - 必要なフィールドごとにnullでないような構造を持っています。それでも空白が挿入されています。

CakePH側 - データアレイを保存する前に空白かどうかチェックしています。

誰かが私を助けてくれたら本当に感謝します。

ありがとうございます。

+0

検証ルールを投稿できますか? – dhofstet

答えて

2

すべてのデータベース(Oracle以外)に空の文字列''がnullでないため、空白です。したがって、データベースはそれを受け入れます。

あなたが起きてからこれを防ぐためにしたい場合は、あなたがそうのようなトリガーを記述する必要があります。
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

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 ; 

代わりにあなたが性別enumフィールド

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

リンクを作ることができます
http://dev.mysql.com/doc/refman/5.5/en/triggers.html