2016-09-27 13 views
0

PHPで書かれたアップロードスクリプトがあり、CSVからデータを受け取り、アップロードされた各CSVの各特定のテーブルに挿入します。phpでmysqlと異なる日付形式を挿入

別の日付形式のデータを正しく挿入しないという問題を修正する必要があります。すべての日付形式をカバーし、時間以外のYYYY-MM-DD(2016-09-27)のように保存する必要があります。

Database table: 
     id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
     USER VARCHAR(50) NOT NULL, 
     Date DATE, 
     Time TIME 

    PHP/MySQL 
     $stmt = $conn->prepare("INSERT INTO ".$table_name." (User, Date,Time) VALUES (?,?,?)"); 
     $stmt->bind_param("sss", $user, $date,$time); 

     $user = $data_array[$i][0]; 
     $date = $data_array[$i][1]; 
     $time = $data_array[$i][2]; 

     $stmt->execute(); 

私はSTR_TO_DATEについて読んでてきたが、私は、私はこのケースでは、それを使うべき場所がわからないんだけど: それはこのようになります。

$user = $data_array[$i][0]; 
    $date = $data_array[$i][1]; 
    $time = $data_array[$i][2]; 

    $stmt->bind_param("sss", $user, $date,$time); 

次: あなたはMySQLの日付フォーマット機能を使用することができますuはbind_param()このよう $user $date $time

でそれらを使用した後

+1

にのみ、FORMATの日付のデータベースに 'Y-M-D 'タイプの日付を挿入することができます。 –

+0

$ date = $ data_array [$ i] [1];のデータ型と値は正確に何ですか? – sietse85

+0

「LOCALEなどのヒントを指定することができない限り、すべての日付形式をカバーする必要があります。これは不可能です。 2011年3月2日が3月2日か2月3日かを知る方法はありません。それは、英語が英語以外の単語で表される2桁または月によって表される可能性を検討する前です。 – symcbean

答えて

0

は、最初に私はあなたの定義VARSに気づきました。

を参照してください:あなたは、文字列の日付が有効なMySQLの日付に変換することができます。この機能でhttps://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

VALUES(?,DATE_FORMAT('?','format'),?)

マニュアルからのデータが

例であるフォーマットでフォーマットを置き換え:SELECT DATE_FORMAT('2009-10-04 22:23:00', '%W %M %Y');

+0

VALUESステートメントの引用符でなければなりませんか? –

+0

このように、はい? (ユーザー名、日付、時刻)VALUES(?、DATE_FORMAT( '?'、 '%Y-%m-%d')、?) "); CSVをアップロードしますが、表を作成してデータを挿入することはありません:/ –

+0

atmelベースのデバイスからCSVをアップロードするので、画面にエラーが表示されるのは少し面倒です。たぶん、ログに何かがあります。 –

関連する問題