私はPHPを使用していて、dd/mm/yyyy
という形式の日付文字列を解析し、それをMySqlに格納する必要があります。
文字列をMySqlテーブルのdatetime変数に変換するにはどうすればよいですか?ユーザ入力の日付文字列をdatetimeとして保存
2
A
答えて
1
この使用されるだろうおそらく最良の方法:のようなhttp://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date
SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y');
-> '2004-04-31'
または同等のPHPの関数:(PHP 5.3から) http://www.php.net/manual/en/function.date-parse-from-format.phpを
一般的なPHPの関数は
function convertDate($dateString) {
return date('Y-m-d H:i:s',strtotime(str_replace('/','-',$dateString)));
}
ようになります。
または
function convertDate($dateString) {
$a = explode($dateString('/'));
return "{$a[2]}-{$a[1]}-{$a[0]} 00:00:00";
}
0
最初に、必要な書式の日付の設定を保存する必要があります。 ISO_DATE形式が「Y-m-d」であることを知っています 何らかの形で出力設定を保存する必要があります。 区切り記号がわかっていて、日付の入力形式がわかっている場合は、checkdate()を使用して日付を入力する形式を確認し、あらかじめ定義された区切り記号で値を分解してISO標準に変換します。
フィールドが特定の型(String、Date、Datetime、Integer、Float)であるかどうかを確認する検証オブジェクトがあり、次にSQLに送信されるパラメータを書式設定します: 例として、
$_POST["DATA"] = array("name"=>"Koko bongo","age"=>12,"graduation_date"=>"12/06/1986");
と、このように私たちは、検証の配列を定義します:
$validator= array("name"=>"string","age"=>"integer","graduation_date"=>"date");
私は、これは自動化されますが、あなたがでcustomlyインプレース、それを行うことができ、各テーブルの構成を有しているPHPに私のHTMLフォームからworというevalAndFormatType関数を持つこの
function evalAndFormatType($value,$type) {
switch strtolower($type) {
case "integer":
$item = is_numeric($value) && !strstr($value,DECIMAL_SEPARATOR) ? intval($item) :false;
break;
case "Date":/*we suppose that somehow we now the order, how you do it it is your decision: configuration array,constants etc*/
$check = explode(DATE_SEPARATOR,$value);
$item = sizeof($check) == 3 && checkdate(intval($check[1]),intval($check[0]),intval($check[2])) ? $check[2]."-".$check[1]."-".$check[0] : false;
break;
default:
throw Exception("Unknown type ".$type);
break;
}
return $item;
}
now, in your code you can say
$_DATA = $_POST["DATA"]; // the previously defined array
$errMsg = array();
foreach($_DATA as $k=>$v) {
$_DATA[$k] = evalAndFormat($v,$validator[$k]);
if($_DATA[$k] === false) {
$errMsg[$k] = "requires type ".$validator[$k];
}
}
if(empty($errMsg)){
$sql= ....WHATEVER USING THE INFO
} else {
return $errMsg;
/*this can be used to show errors nicely near your text boxes by parsing the expected keys or sending it by JSON etc
or
you could create a string out of it by using locale data that you might have which could output something like
Required fields: Graduation date[invalid type],Name,Age ... etc
"/
などのKSは、私は、これは、あなたの質問に答えると、さらにその上に、私の「奇妙な」アプローチを説明したいと考えています。
}
関連する問題
- 1. 日付を文字として保存した日付を
- 2. 日付を文字列として保存
- 3. DateTimeをデータベースに文字列として保存する
- 4. ループバック日付の値を文字列として保存しました
- 5. 角型バインド文字列日付入力型日付
- 6. Pythonユーザ入力と日付変換
- 7. LC-3 - 入力文字を保存して文字列の後に入力と出力の両方で入力文字を印刷する方法は?
- 8. 文字列の日付と時刻をDateTimeに変換
- 9. ユーザ入力日付とシステム日付の比較
- 10. 日付を文字列の文字列として比較
- 11. ユーザ入力から分割文字列
- 12. 新しい入力文字列をNSMutableArray iPhoneに保存する
- 13. Magento 1.6 - モデルのコレクションとしてユーザ入力から配列を保存する
- 14. 日付を文字列として文字列に渡す
- 15. 日付文字列を日付で変換しますDateTime形式vb.net
- 16. 1文字のユーザ入力とfgets
- 17. ユーザ入力に文字列が含まれているとPython
- 18. Node.js日付をKnex dateTime()/ MySQL DATETIMEフィールドに保存する
- 19. dateTimeの文字列の日付を変換するには?
- 20. ユーザ入力の文字列/文字を別の文字列/文字と比較する
- 21. 日付文字列が日付入力に表示されない
- 22. mysqlのユーザ入力文字列とcurdateの比較
- 23. java.lang.NumberFormatException:入力文字列の場合: ""データベースに保存中
- 24. 入力タイプ "datetime"の現在の日付と時刻をPHPを使用して
- 25. ncursesメニュー - ユーザ入力の文字列を表示しません
- 26. Javaのベクトルを使用したユーザ入力文字列
- 27. C#の文字列からDateTimeまでの日付解析。
- 28. 文字列を保存して後日にインポートする
- 29. DateTimeを日付と時刻の両方で入力する
- 30. テキスト文字列のユーザ入力から特殊文字をスキップし、Javascriptの
おかげで、私はdatetime型に文字列ではなく、SQL関数を変換するために、PHPの関数が必要です。.. –
なぜいけないのでしょうか? INSERT/UPDATEクエリでMySQL関数を使用することはできます。とにかく、私は分で一般的なPHP関数で答えを更新します。 – Mchl