<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://mochiu.net/index.php?action=history&amp;feed=atom&amp;title=PHP%E3%81%A8%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9_-_INSERT</id>
	<title>PHPとデータベース - INSERT - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://mochiu.net/index.php?action=history&amp;feed=atom&amp;title=PHP%E3%81%A8%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9_-_INSERT"/>
	<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=PHP%E3%81%A8%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9_-_INSERT&amp;action=history"/>
	<updated>2026-07-17T14:33:38Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://mochiu.net/index.php?title=PHP%E3%81%A8%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9_-_INSERT&amp;diff=12468&amp;oldid=prev</id>
		<title>Wiki: ページの作成:「== 概要 == &lt;br&gt;&lt;br&gt;  == DATETIME型 == &lt;u&gt;SQLインジェクション対策のため、必ず、プリペアドステートメントを使用する。&lt;/u&gt;&lt;br&gt; これは、パフォーマンスの向上にも寄与する。&lt;br&gt; &lt;br&gt; ==== タイムゾーンの設定 ====  &lt;syntaxhighlight lang=&quot;php&quot;&gt;  // PHPのタイムゾーン設定  date_default_timezone_set(&#039;Asia/Tokyo&#039;);    // データベース接続の設定  $dsn = &#039;mysql:host=&lt;ホスト名またはIPアド…」</title>
		<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=PHP%E3%81%A8%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9_-_INSERT&amp;diff=12468&amp;oldid=prev"/>
		<updated>2024-11-23T08:02:37Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「== 概要 == &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;  == DATETIME型 == &amp;lt;u&amp;gt;SQLインジェクション対策のため、必ず、プリペアドステートメントを使用する。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt; これは、パフォーマンスの向上にも寄与する。&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; ==== タイムゾーンの設定 ====  &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;  // PHPのタイムゾーン設定  date_default_timezone_set(&amp;#039;Asia/Tokyo&amp;#039;);    // データベース接続の設定  $dsn = &amp;#039;mysql:host=&amp;lt;ホスト名またはIPアド…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 概要 ==&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DATETIME型 ==&lt;br /&gt;
&amp;lt;u&amp;gt;SQLインジェクション対策のため、必ず、プリペアドステートメントを使用する。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
これは、パフォーマンスの向上にも寄与する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== タイムゾーンの設定 ====&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 // PHPのタイムゾーン設定&lt;br /&gt;
 date_default_timezone_set(&amp;#039;Asia/Tokyo&amp;#039;);&lt;br /&gt;
 &lt;br /&gt;
 // データベース接続の設定&lt;br /&gt;
 $dsn = &amp;#039;mysql:host=&amp;lt;ホスト名またはIPアドレス&amp;gt;;dbname=&amp;lt;データベース名&amp;gt;;charset=utf8mb4&amp;#039;;&lt;br /&gt;
 $username = &amp;#039;username&amp;#039;;&lt;br /&gt;
 $password = &amp;#039;password&amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
 try {&lt;br /&gt;
    $pdo = new PDO($dsn, $username, $password, [&lt;br /&gt;
       PDO::ATTR_ERRMODE =&amp;gt; PDO::ERRMODE_EXCEPTION,&lt;br /&gt;
       PDO::ATTR_DEFAULT_FETCH_MODE =&amp;gt; PDO::FETCH_ASSOC&lt;br /&gt;
    ]);&lt;br /&gt;
 &lt;br /&gt;
    $pdo-&amp;gt;exec(&amp;quot;SET time_zone = &amp;#039;+09:00&amp;#039;&amp;quot;);   // MySQLのタイムゾーン設定&lt;br /&gt;
 }&lt;br /&gt;
 catch (PDOException $e) {&lt;br /&gt;
    echo &amp;quot;エラー: &amp;quot; . $e-&amp;gt;getMessage();&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== NOW関数の使用 ====&lt;br /&gt;
MySQLの&amp;lt;code&amp;gt;NOW&amp;lt;/code&amp;gt;関数を使用して現在時刻を挿入する。&lt;br /&gt;
サーバ側の時刻が使用されるため、最も正確である。&lt;br /&gt;
&lt;br /&gt;
なお、タイムゾーンはMySQLの設定に依存することに注意する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 // データベース接続の設定&lt;br /&gt;
 $dsn = &amp;#039;mysql:host=&amp;lt;ホスト名またはIPアドレス&amp;gt;;dbname=&amp;lt;データベース名&amp;gt;;charset=utf8mb4&amp;#039;;&lt;br /&gt;
 $username = &amp;#039;username&amp;#039;;&lt;br /&gt;
 $password = &amp;#039;password&amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
 try {&lt;br /&gt;
    $pdo = new PDO($dsn, $username, $password, [&lt;br /&gt;
       PDO::ATTR_ERRMODE =&amp;gt; PDO::ERRMODE_EXCEPTION,&lt;br /&gt;
       PDO::ATTR_DEFAULT_FETCH_MODE =&amp;gt; PDO::FETCH_ASSOC&lt;br /&gt;
    ]);&lt;br /&gt;
 &lt;br /&gt;
    // 現在時刻をMySQLのNOW関数で挿入&lt;br /&gt;
    // MySQLのカラムがDATETIME型の必要がある&lt;br /&gt;
    $sql  = &amp;quot;INSERT INTO events (event_name, created_at) VALUES (:name, NOW())&amp;quot;;&lt;br /&gt;
    $stmt = $pdo-&amp;gt;prepare($sql);&lt;br /&gt;
    $stmt-&amp;gt;execute([&amp;#039;:name&amp;#039; =&amp;gt; &amp;#039;イベント1&amp;#039;]);&lt;br /&gt;
 }&lt;br /&gt;
 catch (PDOException $e) {&lt;br /&gt;
    echo &amp;quot;エラー: &amp;quot; . $e-&amp;gt;getMessage();&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== DateTimeオブジェクトの使用 ====&lt;br /&gt;
PHPのDateTimeクラスを使用して日時を管理する。&amp;lt;br&amp;gt;&lt;br /&gt;
また、formatメソッドでMySQLが理解できる形式に変換する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
これは、より柔軟な日時の操作が可能である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 // データベース接続の設定&lt;br /&gt;
 $dsn = &amp;#039;mysql:host=&amp;lt;ホスト名またはIPアドレス&amp;gt;;dbname=&amp;lt;データベース名&amp;gt;;charset=utf8mb4&amp;#039;;&lt;br /&gt;
 $username = &amp;#039;username&amp;#039;;&lt;br /&gt;
 $password = &amp;#039;password&amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
 try {&lt;br /&gt;
    $pdo = new PDO($dsn, $username, $password, [&lt;br /&gt;
       PDO::ATTR_ERRMODE =&amp;gt; PDO::ERRMODE_EXCEPTION,&lt;br /&gt;
       PDO::ATTR_DEFAULT_FETCH_MODE =&amp;gt; PDO::FETCH_ASSOC&lt;br /&gt;
    ]);&lt;br /&gt;
 &lt;br /&gt;
    // PHPのDateTimeオブジェクトを使用&lt;br /&gt;
    $sql  = &amp;quot;INSERT INTO events (event_name, created_at) VALUES (:name, :datetime)&amp;quot;;&lt;br /&gt;
    $stmt = $pdo-&amp;gt;prepare($sql2);&lt;br /&gt;
    $datetime = new DateTime();&lt;br /&gt;
    $stmt2-&amp;gt;execute([&amp;#039;:name&amp;#039; =&amp;gt; &amp;#039;イベント&amp;#039;,&lt;br /&gt;
                     &amp;#039;:datetime&amp;#039; =&amp;gt; $datetime-&amp;gt;format(&amp;#039;Y-m-d H:i:s&amp;#039;)&lt;br /&gt;
    ]);&lt;br /&gt;
 }&lt;br /&gt;
 catch (PDOException $e) {&lt;br /&gt;
    echo &amp;quot;エラー : &amp;quot; . $e-&amp;gt;getMessage();&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 文字列での直接指定 ====&lt;br /&gt;
特定の日時を文字列として指定する。&lt;br /&gt;
&amp;lt;u&amp;gt;ただし、フォーマットはYYYY-MM-DD HH:MM:SS形式である必要がある。&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
また、入力値の検証が重要となる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 // データベース接続の設定&lt;br /&gt;
 $dsn = &amp;#039;mysql:host=&amp;lt;ホスト名またはIPアドレス&amp;gt;;dbname=&amp;lt;データベース名&amp;gt;;charset=utf8mb4&amp;#039;;&lt;br /&gt;
 $username = &amp;#039;username&amp;#039;;&lt;br /&gt;
 $password = &amp;#039;password&amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
 try {&lt;br /&gt;
    $pdo = new PDO($dsn, $username, $password, [&lt;br /&gt;
       PDO::ATTR_ERRMODE =&amp;gt; PDO::ERRMODE_EXCEPTION,&lt;br /&gt;
       PDO::ATTR_DEFAULT_FETCH_MODE =&amp;gt; PDO::FETCH_ASSOC&lt;br /&gt;
    ]);&lt;br /&gt;
 &lt;br /&gt;
    // 特定の日時を文字列で指定&lt;br /&gt;
    $sql  = &amp;quot;INSERT INTO events (event_name, created_at) VALUES (:name, :datetime)&amp;quot;;&lt;br /&gt;
    $stmt = $pdo-&amp;gt;prepare($sql);&lt;br /&gt;
    $specificDate = &amp;#039;2024-12-31 23:59:59&amp;#039;;&lt;br /&gt;
    $stmt-&amp;gt;execute([&amp;#039;:name&amp;#039; =&amp;gt; &amp;#039;イベント3&amp;#039;,&lt;br /&gt;
                    &amp;#039;:datetime&amp;#039; =&amp;gt; $specificDate]);&lt;br /&gt;
 }&lt;br /&gt;
 catch (PDOException $e) {&lt;br /&gt;
    echo &amp;quot;エラー : &amp;quot; . $e-&amp;gt;getMessage();&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 明示的な型指定 ====&lt;br /&gt;
PDO::bindValueメソッドを使用してパラメータの型を明示的に指定する。&amp;lt;br&amp;gt;&lt;br /&gt;
これは、より厳密な型チェックが可能となる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Br&amp;gt;&lt;br /&gt;
PDO::PARAM_STRを使用してSTRING型として扱う必要がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 // データベース接続の設定&lt;br /&gt;
 $dsn = &amp;#039;mysql:host=&amp;lt;ホスト名またはIPアドレス&amp;gt;;dbname=&amp;lt;データベース名&amp;gt;;charset=utf8mb4&amp;#039;;&lt;br /&gt;
 $username = &amp;#039;username&amp;#039;;&lt;br /&gt;
 $password = &amp;#039;password&amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
 try {&lt;br /&gt;
    $pdo = new PDO($dsn, $username, $password, [&lt;br /&gt;
       PDO::ATTR_ERRMODE =&amp;gt; PDO::ERRMODE_EXCEPTION,&lt;br /&gt;
       PDO::ATTR_DEFAULT_FETCH_MODE =&amp;gt; PDO::FETCH_ASSOC&lt;br /&gt;
    ]);&lt;br /&gt;
 &lt;br /&gt;
    // バインドパラメータの型を明示的に指定&lt;br /&gt;
    $sql      = &amp;quot;INSERT INTO events (event_name, created_at) VALUES (:name, :datetime)&amp;quot;;&lt;br /&gt;
    $stmt     = $pdo-&amp;gt;prepare($sql);&lt;br /&gt;
    $datetime = new DateTime(&amp;#039;+1 week&amp;#039;);&lt;br /&gt;
    $stmt-&amp;gt;bindValue(&amp;#039;:name&amp;#039;, &amp;#039;イベント&amp;#039;, PDO::PARAM_STR);&lt;br /&gt;
    $stmt-&amp;gt;bindValue(&amp;#039;:datetime&amp;#039;, $datetime-&amp;gt;format(&amp;#039;Y-m-d H:i:s&amp;#039;), PDO::PARAM_STR);&lt;br /&gt;
    $stmt-&amp;gt;execute();&lt;br /&gt;
 }&lt;br /&gt;
 catch (PDOException $e) {&lt;br /&gt;
    echo &amp;quot;エラー: &amp;quot; . $e-&amp;gt;getMessage();&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 複数のレコードの一括挿入 ====&lt;br /&gt;
配列を使用して、繰り返し文で複数のレコードを効率的に挿入する。&amp;lt;br&amp;gt;&lt;br /&gt;
これは、メモリ効率が良い。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 // データベース接続の設定&lt;br /&gt;
 $dsn = &amp;#039;mysql:host=&amp;lt;ホスト名またはIPアドレス&amp;gt;;dbname=&amp;lt;データベース名&amp;gt;;charset=utf8mb4&amp;#039;;&lt;br /&gt;
 $username = &amp;#039;username&amp;#039;;&lt;br /&gt;
 $password = &amp;#039;password&amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
 try {&lt;br /&gt;
    $pdo = new PDO($dsn, $username, $password, [&lt;br /&gt;
       PDO::ATTR_ERRMODE =&amp;gt; PDO::ERRMODE_EXCEPTION,&lt;br /&gt;
       PDO::ATTR_DEFAULT_FETCH_MODE =&amp;gt; PDO::FETCH_ASSOC&lt;br /&gt;
    ]);&lt;br /&gt;
 &lt;br /&gt;
    // 複数のレコードの一括挿入&lt;br /&gt;
    $sql  = &amp;quot;INSERT INTO events (event_name, created_at) VALUES (?, ?)&amp;quot;;&lt;br /&gt;
    $stmt = $pdo-&amp;gt;prepare($sql5);&lt;br /&gt;
 &lt;br /&gt;
    $events = [&lt;br /&gt;
       [&amp;#039;イベント5&amp;#039;, &amp;#039;2024-01-01 00:00:00&amp;#039;],&lt;br /&gt;
       [&amp;#039;イベント6&amp;#039;, &amp;#039;2024-01-02 00:00:00&amp;#039;],&lt;br /&gt;
    ];&lt;br /&gt;
 &lt;br /&gt;
    foreach ($events as $event) {&lt;br /&gt;
       $stmt-&amp;gt;execute($event);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 catch (PDOException $e) {&lt;br /&gt;
    echo &amp;quot;エラー: &amp;quot; . $e-&amp;gt;getMessage();&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== トランザクションを使用した安全な挿入 ====&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 // データベース接続の設定&lt;br /&gt;
 $dsn = &amp;#039;mysql:host=&amp;lt;ホスト名またはIPアドレス&amp;gt;;dbname=&amp;lt;データベース名&amp;gt;;charset=utf8mb4&amp;#039;;&lt;br /&gt;
 $username = &amp;#039;username&amp;#039;;&lt;br /&gt;
 $password = &amp;#039;password&amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
 try {&lt;br /&gt;
    $pdo = new PDO($dsn, $username, $password, [&lt;br /&gt;
       PDO::ATTR_ERRMODE =&amp;gt; PDO::ERRMODE_EXCEPTION,&lt;br /&gt;
       PDO::ATTR_DEFAULT_FETCH_MODE =&amp;gt; PDO::FETCH_ASSOC&lt;br /&gt;
    ]);&lt;br /&gt;
 &lt;br /&gt;
    // トランザクションを使用した安全な挿入&lt;br /&gt;
    $pdo-&amp;gt;beginTransaction();&lt;br /&gt;
    try {&lt;br /&gt;
       $sql  = &amp;quot;INSERT INTO events (event_name, created_at) VALUES (:name, :datetime)&amp;quot;;&lt;br /&gt;
       $stmt = $pdo-&amp;gt;prepare($sql6);&lt;br /&gt;
 &lt;br /&gt;
       $datetime = new DateTime();&lt;br /&gt;
       $stmt-&amp;gt;execute([&amp;#039;:name&amp;#039; =&amp;gt; &amp;#039;トランザクションイベント&amp;#039;,&lt;br /&gt;
                       &amp;#039;:datetime&amp;#039; =&amp;gt; $datetime-&amp;gt;format(&amp;#039;Y-m-d H:i:s&amp;#039;)]);&lt;br /&gt;
       $pdo-&amp;gt;commit();&lt;br /&gt;
    }&lt;br /&gt;
    catch (Exception $e) {&lt;br /&gt;
       $pdo-&amp;gt;rollBack();&lt;br /&gt;
       throw $e;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 catch (PDOException $e) {&lt;br /&gt;
    echo &amp;quot;エラー: &amp;quot; . $e-&amp;gt;getMessage();&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 日付のバリデーション ====&lt;br /&gt;
DateTime::createFromFormatメソッドを使用した日付バリデーションにおいて、以下に示す検証を組み合わせることにより、堅牢な日付バリデーションが実現できる。&amp;lt;br&amp;gt;&lt;br /&gt;
必ず、タイムゾーンを考慮する必要がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
DateTimeクラスの書式指定子&amp;lt;br&amp;gt;&lt;br /&gt;
* Y&lt;br /&gt;
*: 4桁の年 (例: 2024)&lt;br /&gt;
* m&lt;br /&gt;
*: 2桁の月 (01-12)&lt;br /&gt;
* d&lt;br /&gt;
*: 2桁の日 (01-31)&lt;br /&gt;
* H&lt;br /&gt;
*: 24時間形式の時 (00-23)&lt;br /&gt;
* i&lt;br /&gt;
*: 分 (00-59)&lt;br /&gt;
* s&lt;br /&gt;
*: 秒 (00-59)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
常にタイムゾーンを明示的に設定する。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 date_default_timezone_set(&amp;#039;Asia/Tokyo&amp;#039;);&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 // 使用例 1&lt;br /&gt;
 &lt;br /&gt;
 try {&lt;br /&gt;
    $datetime = DateTime::createFromFormat(&amp;#039;Y-m-d H:i:s&amp;#039;, $dateString);&lt;br /&gt;
    $errors   = DateTime::getLastErrors();  // 戻り値は連想配列となることに注意&lt;br /&gt;
 &lt;br /&gt;
    if ($errors[&amp;#039;warning_count&amp;#039;] &amp;gt; 0 || $errors[&amp;#039;error_count&amp;#039;] &amp;gt; 0) {&lt;br /&gt;
       // エラーがある場合&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 catch (Exception $e) {&lt;br /&gt;
    // エラー処理&lt;br /&gt;
    log_error($e-&amp;gt;getMessage());&lt;br /&gt;
    return false;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 正常に処理ができた場合は、処理を以下に記述...&lt;br /&gt;
 // ...略&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 // 使用例 2&lt;br /&gt;
 &lt;br /&gt;
 try {&lt;br /&gt;
    $date = new DateTime($dateString);&lt;br /&gt;
    if ($date === false) {&lt;br /&gt;
       throw new Exception(&amp;quot;無効な日付フォーマットです&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 catch (Exception $e) {&lt;br /&gt;
    // エラー処理&lt;br /&gt;
    log_error($e-&amp;gt;getMessage());&lt;br /&gt;
    return false;&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
また、日付の範囲をチェックする必要もある。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 $minDate = new DateTime(&amp;#039;2000-01-01&amp;#039;);&lt;br /&gt;
 $maxDate = new DateTime(&amp;#039;2099-12-31&amp;#039;);&lt;br /&gt;
 &lt;br /&gt;
 if ($date &amp;gt;= $minDate &amp;amp;&amp;amp; $date &amp;lt;= $maxDate) {&lt;br /&gt;
    // 有効な範囲の場合&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
ユーザ入力が伴う場合は、XSS攻撃の可能性があるため、正規化が必要となる。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 $date = trim($dateString);&lt;br /&gt;
 $date = filter_var($date, FILTER_SANITIZE_STRING);&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki&lt;br /&gt;
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板&lt;br /&gt;
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux&lt;br /&gt;
|image=/resources/assets/MochiuLogo_Single_Blue.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[カテゴリ:Web]]&lt;/div&gt;</summary>
		<author><name>Wiki</name></author>
	</entry>
</feed>