これを行っている場合:
- オブジェクトを作成またはロードする
$o
。 -
'12345'
を割り当てます 問題のプロパティ/列に移動します。 -
$o
を保存します MySQLに値を'1234'
に切り捨てさせます 。 -
$o
のプロパティ/列にアクセスします'12345'
を取得します 戻る。
そうすると、データベースにデータを黙って壊してしまうという問題の1つが発生します。
保存は成功します。オブジェクトはMySQLがデータを切り捨てたことを認識しないため、'12345'
を保持します。 データベースからその列をリロードするのではなく、データの一貫性が失われます。
MySQLに依存してデータを黙って切り捨てている場合は、おそらくこれを行う必要があります:
- オブジェクトを作成/ロードします。
- プロパティを更新しました。
- オブジェクトを保存します。
- オブジェクトへのローカル参照を破棄します。
- データベースから新しくロードして、本物のを確実に取得します。 値。
MySQL内でのサイレントな切り捨てを回避するために、オブジェクトに厳密な検証を追加することをお勧めします。 厳密モード をオンにする この問題も回避できますが、エラー処理とデータ検証をすべて確認して強化する必要があります(これは実際には悪いことではありません)。