ホームページ >バックエンド開発 >PHPチュートリアル >thinkphpの問題相談
フィールドフィルタリング
データテーブルに存在しないフィールドデータが書き込まれると、直接フィルタリングされます。例:
$data['name'] = 'thinkphp';
$data['email'] = ' thinkphp@ gmail.com';
$data['test'] = 'test';
$User = M('User');
$User->data($data)->add();
コードをコピーします
テストフィールドは存在しないため、データの書き込み時に自動的に除外されます。
バージョン 3.2.2 以降では、デバッグ モードがオンになっている場合、次のプロンプトを表示して例外がスローされます: 不正なデータ オブジェクト: [test=>test]
上記はマニュアルからのもので、デバッグはオンになっていますが、エラーは報告されません。以前なら他のプロジェクトにも応募していただろう。公式Webサイトから最新のソースコードをリロードしましたが、エラーは報告されませんでした。特に更新の際、条件欄が間違って自分でフィルタリングして全てのデータを更新するのが大変でした
。フィールドフィルタリング
データテーブルに存在しないフィールドデータが書き込まれると、直接フィルタリングされます。例:
$data['name'] = 'thinkphp';
$data['email'] = ' thinkphp@ gmail.com';
$data['test'] = 'test';
$User = M('User');
$User->data($data)->add();
コードをコピーします
テストフィールドは存在しないため、データの書き込み時に自動的に除外されます。
バージョン 3.2.2 以降では、デバッグ モードがオンになっている場合、次のプロンプトを表示して例外がスローされます: 不正なデータ オブジェクト: [test=>test]
上記はマニュアルからのもので、デバッグはオンになっていますが、エラーは報告されません。以前なら他のプロジェクトにも応募していただろう。公式Webサイトから最新のソースコードをリロードしましたが、エラーは報告されませんでした。特に更新の際、条件欄が間違って自分でフィルタリングして全てのデータを更新するのが大変でした
。
TP3.2.3のソースコードを調べてみたところ、$this->options['strict']が空でない場合のみエラーが報告されることが分かりました。このoptions['strict']をどこで操作するかについては、見つかりませんでした。
バグのような気がします。
探してみてください。
thinkphp_3.2.3_full/ThinkPHP/Library/Think/Model.class.php
267 ~ 277 行目:
条件がある場合は、where()の連続演算を追加できます
ThinkPHPLibraryThinkModel.class.php には 2 つのエラーがあります。1 つは条件エラーで、もう 1 つは挿入操作フィールドのエラーです。
特定のエラーについては解決策がありません。3.2.2と比較して同じ条件に変更しましたが、大きな問題はありません。