0

これは私の変数です:

     <?php 
     //...
     $creat='2000-03-15'  ,from an input field.
     ?> 

これは私の挿入コードです:

     <?php 
     //...
       $this->Comment->updateAll(         
              array('Comment.c' => $creat ),
              array('Comment.id' => '3'  ));
     ?> 

「2000-03-15」ではなく、日付フィールド タイプを持つテーブルに保存したい場合、「0000-00-00」がありますか?
なぜ?
コメントありがとう!

4

1 に答える 1

0

updateAll 関数は入力をエスケープしません。また、データを引用符で囲むこともありません。

あなたの例では、 $creat 変数を適切にエスケープするには、次のコードを使用することをお勧めします。

<?php
App::uses('Sanitize', 'Utility');
$Comment->updateAll(array(
    'Comment.c' => "'" . Sanitize::escape($creat) . "'"
), array(
    'Comment.id' => 3
));

日付を引用符で囲み、Sanitize::escape を介して渡して、SQL インジェクションから確実に保護します。

于 2012-05-19T15:55:24.177 に答える