0

しばらく調べた後、非表示のフォームフィールドとPHP MS SQLクエリを使用して、データの送信時にデータベースにアップロードされた日付を追加するのに苦労しています。MySQL NOW()関数に似たもの。私が試したがうまくいかない。次に、PHPの日付関数も試しました。

<input type="hidden" name="DateUploaded" value="<?php date("d","m","y") ?>">

私のアップロードは次のようになります:

<?php 
 $Title=$_POST['Title'];
 $Synopsis=$_POST['Synopsis'];
  $Article=$_POST['Article'];
  $DateUploaded=$_POST['DateUploaded'];
  $Deleted=$_POST['Deleted'];
  mssql_connect("*************", "*********", "*********") or die; 
  mssql_select_db("DBName") or die; 
  mssql_query("INSERT INTO DBTable (Title, Synopsis, Article, DateUploaded,   Deleted) VALUES ('$Title','$Synopsis','$Article','$DateUploaded','$Deleted')"); 
  Print "Your information has been successfully added to the database."; 
   ?>

これは単純なテストブログDBですが、この手法を試してみると、次のエラーが発生します。

Warning: mssql_query() [function.mssql-query]: message: Conversion failed when converting character string to smalldatetime data type. (severity 16) in (File Path) on line 9

これは、smalldatetimeとして設定されたDB列に文字列を入れようとしているためだと理解しています。DBのデータ型を変更する必要がない、これを回避する方法があるかどうか疑問に思っていました。

どんな助けでもいただければ幸いです。

4

2 に答える 2

2

非表示フィールドを使用する代わりに、次のようにphpのdate()を使用します。

$DateUploaded=date("Y-m-d H:i:s");

提出されたデータベースの日付タイプが正しいことを確認してください。

于 2012-09-04T09:07:50.293 に答える
1

フォームに隠しフィールドを付けずに、データベースにクエリを実行する前にタイムスタンプ値を生成して値を書き込むことができます。あなたはセキュリティ違反を節約し、それはより良いスタイルになります。

私の例:

$dateUploaded = time();

詳細については、 time()関数を参照してください。隠しフィールドよりも良い解決策を探すことをお勧めします。

于 2012-09-04T08:36:43.563 に答える