上級章では、PHP の開発と運用効率を向上させるためのデータベース、Cookie、およびセッションの使用について説明します
PHP プログラマーが習得する必要がある MySQL 操作
プロジェクト用のテーブルの設計 SQL ステートメントの使用 MySQL ディレクトリ構造 データ ディレクトリにはライブラリ ファイルが保存されます bin ディレクトリには MySQL 管理コマンドが保存されます *.ini ファイルは MySQL 構成を記録します MySQL DB に接続します:
mysql -h SQL アドレス -u ユーザー名 -p パスワードmysql -h localhost -u root -p123456 など 安全な方法: 最初に「mysql -h sql address -u username -p」と入力し、Enter キーを押してからパスワードを入力します データ定義言語 (DDL)
定義: データベース内のさまざまなオブジェクト (テーブル、ビュー、インデックス、シノニム、クラスターなど) を作成するために使用されます。 SQL ステートメント データベースの作成
CREATE DATABASE [IF NO EXISTS] DatabaseName
ログイン後にコピー
テーブルの作成
CREATE TABLE [IF NOT EXISTS] TableName (colname1 type [property] [index],colname2 type [property] [index],...)[tableType] [tableCharSet];
ログイン後にコピー
Modify表Alterテーブル操作
Dataタイプタイプ-numericTypeunsigned:unsigned Storageinintegerタイプとして指定されている。 (-32 768, 32 767) (0, 65 535) 大きな整数値
MEDIUMINT 3 バイト (-8 388 608, 8 388 607) (0, 16 777 215) 大きな整数値 INT または INTEGER 4 バイト (-2 147 483 648, 2 147 483 647) (0, 4 294 967 295) 大きい整数値
BIGINT 8 バイト (-9 233 372 036 854 775 808, 9 223 372 036 854 775 807 ) (0 , 18 446 744 073 709 551 615) 最大整数値 浮動小数点 FLOAT 4 バイト (-3.402 823 466 E+38、1.175 494 351 E-38)、0、(1.175 494 351 E-38 、3.402 823 466 3) 51E+38) 0、(1.175 494 351 E-38、3.402 823 466 E+38)
DOUBLE 8 バイト (1.797 693 134 862 315 7 E+308、2.225 073 85 8 507 201 4 E -308)、 (2.225 073 858 507 201 4 E-308、1.797 693 134 862 315 7 E+308) 0、(2.225 073 858 507 201 4 E-308、1.797 693 134 862 315 7 E+308)
文字タイプ
CHAR 0- 255Byteの固定長文字列、
VARCHAR 0-255Byteの可変長文字列、長さを指定する必要があります TINYBLOB 0-255Byteの255文字を超えないバイナリ文字列
TINYTEXT 0-255Byteの短いテキスト文字列 BLOB 0-65 535Byteの長いテキストデータバイナリ形式
TEXT 0-65 535Byte 長文テキストデータ MEDIUMBLOB 0-16 777 215Byte バイナリ形式の中長テキストデータ
MEDIUMTEXT 0-16 777 215Byte 中長テキストデータ LOGNG BLOB 0 -4 294 967 295Byte 非常に大きいバイナリ形式のテキスト データ
LONGTEXT 0-4 294 967 295Byte 非常に大きなテキスト データ
CHAR の処理速度が速く、VARCHAR は可変サイズです
バイナリ保存は主に非テキスト ファイルの保存に使用されます
ENUM、列挙型、可能最大 65535 個の値を保存できます。1 つのフィールドには 1 つの値しか保存できません
SET、コレクション タイプ、最大 64 個の値を保存でき、1 つの値セグメントには複数の値を保存できます
日付型
DATE 3Byte 1000-01-01/9999- 12-31 YYYY-MM-DD 日付値
TIME 3Byte '-838:59:59'/'838:59:59' HH:MM:SS 時間値または期間 YEAR 1Byte 1901/2155 YYYY 年の値
DATETIME 8Byte 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 日付と時刻の混合値 TIMESTAMP 8Byte 1970 -01-01 00:00:00/ 2037 年のいつか YYYYMMDD HHMMSS 混合日付と時刻の値、タイムスタンプ
※文字列の形式で保存されたデータ型は自動的に型を変換できます
※計算に便利な PHP タイムスタンプとして時間を保存
データフィールド属性
unsigned: このフィールドを符号なしの値に設定します。これは数値型のみ可能です
zerofill: このフィールドのレコードの値が指定された桁数に達しない場合は、「0」を使用します 充填は数値型のみ可能です
auto_increment: このフィールドの値を自動的に増加するように設定するか、カスタム値を設定する必要があります。同時にインデックスまたは主キーを設定する必要があります。数値タイプのみにすることができます
null ではなく null: このフィールドを設定します。空は許可されていますが、空以外に設定し、デフォルトで使用することをお勧めします
default: このフィールドのデフォルト値を設定します。入力されていない場合は、デフォルト値を使用します
インデックス
利点:
改善クエリ速度
短所:
作成コストと保守コストが比較的高い
リソースを占有する
主キーインデックス (主キー): インデックス値は一意である必要があり、テーブルごとに 1 つだけ存在します
一意のインデックス (一意) : インデックス値は一意である必要がありますが、テーブルには複数のインデックスを含めることができます
通常のインデックス (インデックス): 多くの制限のない、最も基本的なインデックス
フルテキスト インデックス (filltext): MyISAM でのみ使用できます。テーブルを作成すると、効果は向上しますが、速度は遅くなります
作成して使用すると、MySQL を効率的に実行するために MySQL インデックス タイプのリストを表示できます
データ テーブルのタイプと保存場所
MySQL は、さまざまなストレージ エンジンのニーズに合わせて最適なストレージ エンジンを選択できます データ テーブル タイプはストレージ エンジンです タイプまたはエンジン キーワードを使用してテーブル タイプを指定します 一般的に使用されるテーブル タイプ MyISAM 高速性を重視読み取り操作 一部の関数 (トランザクション) をサポートしていません InnoDB MyISAM がサポートしていない一部の関数をサポートしています フルテキストインデックスをサポートしていません より多くのスペースを必要とします 関数 | MyISAM | InnoDB |
事務処理 | サポートされません | サポートされる |
データ行ロック | サポートされない | サポートされる |
外部キー制約 | サポートされていません | サポートされています |
テーブルスペースが占有されています | 比較的小さい | 大きい |
全文インデックス | サポートされている | サポートされていない |
MySQL のデフォルトの文字セット
推奨 utf8 文字セット: MySQL が文字列を保存する方法を定義するために使用されます 文字セット キーワードを使用して文字セットを指定します 校正ルール: ルールは文字列を比較する方法を定義します Collate を使用して照合規則を指定します データ操作言語 (DML)
主な形式は 3 つあります: 1) 挿入: INSERT insert into tablename[(field list)] names(value list 1)[,(value list 2 )...] テーブル名の後にフィールド リストがある場合、値のリストはフィールド リストに 1 対 1 で対応します。フィールド リストがない場合、値のリストは のフィールドに対応します。テーブルを 1 対 1 で 2) 更新: UPDATE
update tablename set field name = 'value' [条件] 3) 削除: DELETE
delete from tablename [条件] あなた算術演算子、論理演算子、比較演算記号、ビット演算子などの演算子を使用できます データクエリ言語 (DQL)
基本構造は、SELECT [ALL|DISTINCT] 句、FROM 句、WHERE で構成されるクエリ ブロックです句: SELECT <フィールドリスト> ; FROM <テーブルまたはビュー名> [WHERE<クエリ条件>/GROUP BY/ORDER BY] DISTINCTは重複レコードを表示しないことを意味します asキーワードを使用します曖昧さを引き起こす可能性のあるフィールド名に使用されるフィールド名のエイリアスです データ制御言語 (DCL)
定義: データベースにアクセスするための特定の権限を付与または取り消し、データベース操作トランザクションの時間と効果を制御するために使用されます。データベースなどを監視します。 MySQL 組み込み関数
位置: select ステートメント、および句 where order by getting、update delete ステートメントと句 フィールド名は関数内で変数として使用でき、変数の値はすべて列 Value に対応する値 よく使用される 文字列関数 concat: 受信パラメータを文字列に連結します insert(str,x,y,insert): str の x 位置から開始して、 y の長さの文字列を挿入 lower(str),upper(str): 文字列を大文字と小文字に変換します left(str,x) right(str,x) str の左 (右) の x 文字を返します, x が null の場合、null を返します lpad(str,n,pad) rpad(str,n,pad) パッドを使用して、文字列 str を左端 (右) から全長 n になるまでパディングします trim(str) ,ltrim(str), rtrim(str) は、左右の両側のスペースを削除します replace(str,a,b) 文字列 str 内のすべての文字列 a を文字列 b に置き換えます strcmp(s1,s2): S1 が S2 より大きい場合は -1 を返し、S1 が S2 より大きい場合は 1 を返し、等しい場合は 0 を返します (比較は ASCII コードです)
substring(str,x,y) 文字列 str を返します。位置 x から、長さは y の部分文字列です 数値関数 abs(x): 絶対値を返します ceil(x): x より大きい最小の整数を返します floor(x): 最大の整数を返しますx より小さい mod(x ,y): x と y の法を返します rand(): 0-1 の間の乱数を返します round(x,y): パラメータ x の丸められた結果を返します小数点以下 y 桁
truncate(x, y): 数値の結果を返します (time): UNIX タイムスタンプを返します
from_unixtime(): Unix タイムスタンプを日付に変換します
week(): 週を返しますtimestamp
year(): タイムスタンプの年を返します
hour(): タイムスタンプの時間を返します
minut(): タイムスタンプの分を返します
month(): タイムスタンプの月を返します
date_format(time,"%Y-%m-%d %H:%i:%s" ): フォーマットされた戻り時間
プロセス制御関数
if(value,t,f): 値が true の場合、戻りますt、値が false の場合は f
を返します ifnull(value1,value2): value1 が空の場合は value2 を返し、value1 が空でない場合は value1 を返します
case 。 value3 ビットが true の場合、value4 を返します。 on、そうでない場合は、fault を返します
その他の使用法: mysql ステートメント case when
その他の関数
database(): データベース名を返します
version(): MySQL バージョンを返します
user( ): MySQL ユーザーを返します
inet_aton(ip): IP をネットワーク バイト オーダーに変換します
inet_nton(): ネットワーク バイト オーダーを IP に変換します password(): MySQL ユーザー パスワードを暗号化します md5( str): 文字列を暗号化します PHP がデータベースを操作しますデータベースに接続します mysql_connect(IP,user,psw): IP はデータベース アドレス、user はユーザー名、psw はユーザーのパスワードです。接続が成功した場合は、データベース リソースが返されます。 false が返されます ライブラリの選択 mysql_select_db($ dbname,[$res]): $dbname はライブラリ名です。このパラメータが追加されていない場合、デフォルトは最近作成されたデータベース リソース SQL ステートメント入力 mysql_query(): SQL ステートメントを実行します。ステートメントが結果セットを返す場合、関数は正常に実行され、ステートメントが結果セットを返さない場合、関数が実行されます。成功して true を返す エラーの解決 mysql_errno(): エラー番号を返す mysql_error(): エラーメッセージを返す データベースリソースを閉じる mysql_close(): データベースリソースを閉じ、パラメータを使用せず、開いているリソースを閉じるデフォルト (推奨) Function mysql_insert_id(): AUTO_INCREMENT が設定されていない場合は、自動的に増加する ID を返し、false を返します mysql_affected_rows(): 影響を受ける行の数を取得します 結果セットからデータを取得します mysql_fetch_row($result): 結果セットからデータの一部を取得し、インデックス配列を返します mysql_fetch_assoc($result): 結果セットからデータの一部を取得して、連想配列を返します mysql_fetch_array($result) : 結果セットからデータを取得し、インデックス配列と連想配列を返します mysql_fetch_object($result): 結果セットからデータを取得し、オブジェクトを返します mysql_data_seek($ result,$row):ポインターを指定した位置に移動します 結果セットからフィールドを取得します mysql_num_rows($result): 結果セット内のフィールドの数を取得します mysql_num_fields($result): 結果セット内の列の数を取得します mysql_field_name ($result): 結果セットのフィールド名を取得します mysqli 操作データベース
PHP5以降の新規追加機能は全てオブジェクト指向なので、mysqliはオブジェクトの形で追加されます mysqliの利点 改善点を示します 機能追加 効率が大幅に向上します より安定しています mysqli拡張機能によって提供される 3つクラス mysqli: 接続に関連するクラス 構築メソッド mysqli([$host [, $username [, $passd[, $dbname [,$port [, $socket ]]]]]] ) Return接続に成功した場合はオブジェクト、失敗した場合は false 接続失敗情報を表示 connect_errno(): 接続エラー番号を返す connect_error(): 接続エラー情報を返す SQL文入力 query(sql): SQL文を実行、ステートメントが結果セットを返す場合、関数は正常に実行され、結果セット オブジェクト mysqli_result を返します。ステートメントが結果セットを返さない場合、関数は正常に実行され、true を返します Method affected-rows():影響を受ける行の数を返します errno(): エラー番号を返します error(): エラーメッセージを返します insert_id(): 自動的に増加するIDを返します リソースを閉じる
close(): 閉じる接続 mysqli_result: クエリによってデータベースに返される内容を表現します 結果セット 属性: $num_rows: 結果セット内のレコード数 $field_count: 結果セット内のフィールドの数 $current_field : 現在の列の位置を取得します メソッド: レコードの処理 fetch_row(): mysql_fetch_row () と同じです 一貫性があります fetch_assoc(): mysql_fetch_assoc() と一貫しています fetch_array(): mysql_fetch と一貫しています_array() fetch_object(): mysql_fetch_object() と一致します data_seek(): mysql_data_seek() と一致します free (): 結果セットを解放します フィールドを処理します fetch_field(): 列情報を取り出してそれを返しますオブジェクト fetch_fields(): すべての列情報を取り出し、オブジェクトとして返します field_seek(): フィールドポインタを移動します 複数の SQL ステートメントを実行します
multi_query(sql1[;sql2]): 複数の SQL ステートメント";"で区切って実行可能set mysqli_stmt: 前処理クラス 利点: mysqli と mysqli_result は、mysqil_stmt が完了できる関数を完了できます データのみが異なる場合、複数の同一の SQL ステートメントを実行する必要はありません。ステートメントを繰り返します。データを直接転送します。 受信データと送信データは実行可能ステートメントとしてではなく、値クラスとしてのみ使用されるため、SQL インジェクションを防止します。 オブジェクトを作成します。
mysqli オブジェクトを作成した後、オブジェクトの stmt_init() メソッドを使用して mysqli_stmt オブジェクトを初期化します ステートメントを準備して送信します ステートメント内のパラメーター値にプレースホルダー「?」を使用します mysqli_stmt を使用します prepare($sql) メソッドはステートメントを準備用のサーバー mysqli_stmt オブジェクトを作成する必要はありません。mysqli で prepare($sql) を直接使用して SQL ステートメントを準備し、mysqli_stmt オブジェクトを返します プレースホルダー (バインドパラメータ) に値を渡します bind_param を使用します($type,$var1[,$var2...]) パラメータをバインドします $type は、それぞれ整数、倍精度、文字列、バイナリ リソースを表す i、d、s、b です $ の型の数type はプレースホルダーの数と同じである必要があり、$var の数もプレースホルダーの数と同じである必要があります 変数 $var に値を代入します SQL ステートメントを実行します 結果セットは返されません execute()を使用します メソッドは挿入されたパラメータを実行し、ブール型を返します
結果セットが返されます
bind_result($var1[,$var2...])を使用して結果セットをバインドします
fetch( ) ステートメントを実行し、毎回 1 つの結果を取得します。そして、bind_result() の変数に渡します。
store_result() を使用してステートメントを実行し、すべての結果を一度に取り出し、結果セットを返します。その後、fetch() を使用します。 ) 各レコードを取得します
result_matedate() はフィールド情報を取得するための結果セットを返します
result_free() を使用して結果セットを解放します
リソースを閉じる
close() メソッドを使用して閉じる
関数
mysqli と mysqli_result は関数をサポートしており、mysqli_stmt は基本的に トランザクション処理
テーブルの確立
テーブル MyISAM タイプはトランザクション関数をサポートしていないため、InnoDB タイプのテーブルを作成する必要があります
自動送信をオフにする
autocommit():パラメータが0またはfalseの場合、自動送信をオフにします
トランザクションを送信
commit(): トランザクション(複数項目)実行後のSQL文を送信)
ロールバックトランザクション
rollback(): ロールバックトランザクション(実行された複数のSQL文) )
その他のメソッド
set_charset($string): 取り出す文字セットを設定
PDO
利点: データベースを変更するときにコードを変更する必要がない 欠点: mysqlやmysqliほど効率的ではない 3つのクラス PDO: PHPとデータベースサービス間の接続を表します PDOオブジェクトを作成する dpo($dsn,$username,$passd[,$array]): $dsn が mysql データベースに接続すると、「mysql:host=ip:port;dbname=$string」に設定され、$array はチューニング パラメーター DSN (データ ソース名) データ ソース: ホストの場所、ライブラリ名、さまざまなデータベースに必要なドライバーを含む getattribute($attribute) を使用して属性を表示し、setattribute($attribute,$value) を使用できます属性を設定します SQL ステートメントを実行します
query ($string): 結果セットを返すステートメントを実行し、前処理オブジェクト PDOStatement を返します exec($string): テーブルに影響するステートメントを実行し、数値を返します影響を受ける行の数 デザインエラーレポート setAttribute()を使用する エラーレポートモードを設定する ERRMODE_SILENT: エラーを表示しない、開発者が自分でエラーをチェックする errorCode: エラー番号を返す errorInfo: エラー情報の配列を返す ERRMODE_WARNING: エラーが発生しました。E_WARNING メッセージを表示します ERRMODE_EXCEPTION: エラーが発生しました。PDOException がスローされます トランザクション処理 setAttribute() を使用してトランザクション処理を有効にし、自動送信をオフにします commit() を使用して実行された SQL を送信しますステートメント 実行された SQL ステートメントをロールバックするには、rollback() を使用します PDOStatement: 準備されたステートメントを表し、ステートメントの実行後の関連する結果セットを表します 関数 ステートメントを準備します 結果セットを処理します Prepareそしてステートメントを送信します ステートメント内のパラメーター値は、プレースホルダー "?" を説明するために使用できます プレースホルダー ":プレースホルダー名" は、 PDO::prepare($sql) を使用します準備のためにステートメントをサーバーに送信し、PDOStatement オブジェクトを返し、結果セットを保存するメソッド 値をプレースホルダー (バインドパラメータ) に転送する パラメータをバインドするには、bind_param($key,$value) を使用します "?" プレースホルダー $key はインデックス番号に設定され、 $value は送信された値に設定されます name プレースホルダー $key はキー名に設定されます $value は送信された値に設定されます sqlステートメントの実行 バインドされたパラメータStatementを実行するにはexecute()メソッドを使用します execute($array)を使用し、$array配列にパラメータを追加し、パラメータのバインドを回避します レコード取得
fetch() を使用して結果セット内の各レコードを取得し、インデックスと関連する混合配列を返します パラメータは PDO::FETCH_ASSOC で、連想配列を返します パラメータは PDO::FETCH_NUM で、インデックス配列を返します パラメータは PDO::FETCH_BOTH で、インデックス連想混合配列を返します fetchAll() は結果セットの各レコードを取得し、2 次元の配列を返します 取得モードを設定するには setFatchMode() を使用して、毎回モードを設定しないようにします取得するときは フィールドの取得
columnCount() でフィールドの数を取得します getColumnMeta() は結果セット内の列のメタデータを返します PDOException: PDO によって生成されたエラーを表します。独自のコードで PDOException 例外をスローしないでください 接続例外、SQL ステートメント例外などを含むさまざまな例外をキャッチするには、try catch を使用してください。 mamcache/memcached
高性能の分散メモリ オブジェクト キャッシュ システム。メモリ内に巨大なハッシュ テーブルを維持することで、メモリ内のデータが維持されます 動作原理 PHP が初めてデータをクエリするとき、データは mamcache に保存されます。次回クエリを実行するときは、最初に mamcache にアクセスします。 。 インストール Linux でのインストール libevent イベントに基づいているため、最初に libevent ライブラリをインストールする必要があります
Windows下インストール 默认口口11211 memcacheコマンド コマンド説明例
get | 値を読み取る | get mykey |
set | 無条件にキーを設定 | set mykey 0 60 5 |
add | 新しいキーを追加 | add newkey 0 60 5 |
replace | 既存のキーを上書き | replace key 0 60 5 |
追加 | 既存のキーにデータを追加 | append key 0 60 15 |
prepend | 既存のキーにデータを追加します | prepend key 0 60 15 |
incr | 数値キーの値を指定された数値だけ増分します | incr mykey 2 |
デク | 数値キーの値を指定された数値だけデクリメントします | decr mykey 5 |
delete | 既存のキーを削除します | delete mykey |
flush_all 特定の項目をすぐに無効化します | f lush_all | | n 内のすべての項目を無効にする秒
flush_all 900 | | stats
一般統計を出力 | stats | | メモリ統計を出力
統計スラブを出力 | | メモリを出力統計
stats malloc | | より高いレベルの割り当て統計を出力します
統計項目 | |
統計詳細 | |
統計サイズ | | 統計をリセット
統計をリセット | | バージョン
プリントサーバーのバージョン | バージョン | | 冗長性
ログレベルを上げる | 冗長性 | | quit
Telnetセッションを終了する | quit | PHP中使用memcache 类:memcache 连接:memcache::connect($host,$port) 1 <?php2 $memcache = new Memcache;3 $memcache->connect("localhost",11211) or die("could not connect"); ログイン後にコピー 其他方法 add:添加数据 set/replace:修改数据 get:获取数据 delete:删除数据 ...... 何时使用memcache 数据库中读出来的数据,方便下次使用 会话控制中使用 技巧 用sql语句作为key 用md5()修改sql语句,使sql语句变短,便于保存 会话控制:面向连接的可靠的连接方式,通过会话控制,判断用户的登录行为 cookie技术 服务器给客户端的一个文件,通过客户端的这个文件,保存用户信息,服务器根据文件,区分用户 设置cookie setcookie($key,$value,$time):头信息,不能有任何输出 获取cookie 使用全局数组$_COOKIE[]获取cookie内容 删除cookieti 用setcookie设置$value为空或不设置,$time设置为0或不设置 session技术 在服务器中保存用户数据,会产生一个SessionID,可使用cookie和url传递该id session配置 配置服务器端的php.ini 开启会话 session_start():让php的核心程序将和session有关的内建环境变量预先载入到内存中 开启一个会话 基于cookie的session,使用该函数不能有任何输出 返回已开启的会话 设置和获取session 使用$_SESSION[]设置和获取session session_id()获取和设置session的id 删除session $_SESSION=array();将session设置为空数组 删除cookie中的session session_destory():销毁session 基于url传递sessionid,设置url的参数为session_name,session_start()后,会自动寻找该参数 常量SID,当用户关闭cookie时,该常量表示session_name和session_id;当用户开启cookie时,该常量为空 设置php.ini中的session.use_trans_sid=1,会使页面跳转(超链接、header、表单)后面自动添加SID session高级技术 php.ini中,session的设置 session_name:设置存在cookie以及SID中的session_name session.use_trans_sid:设置SID是否开启,开启后,可自动添加SID session.save_path:设置session文件的保存位置,如果不设置,则不生成session文件 session.gc_maxlifetime:设置session文件有效时间,超过该时间session未刷新,session文件将失效 session.gc_probability和session.gc_divisor结合使用,定义session垃圾回收概率,算法为session.gc_probability/session.gc_divisor session.use_cookie:设置session写入到cookie中 session.cookie_path:设置哪些文件的session写入到cookie中 session.cookie_lifetime:设置session的生命周期 session.save_handler:设置session写入方式及位置,当值为user时,可使用session_set_save_handler()函数 session_set_save_handler(open(),close(),read(),write(),destroy(),gc()):可自定义session文件的存储路径及存储方式等 使用该函数定义了各个方法,像往常一样使用session open():在执行session_start()时,被调用 close():在执行session_write_close()时,被调用 read():在调用open()后,被调用 write():脚本结束时和session_write_close()执行时,被调用 destroy():当session使用session_destroy()或者session_regenerate_id()被销毁时,被调用 gc():由session.gc_probability和session.gc_divisor决定,任何时候军可能被调用 具体用法 将Session写入数据库 将Session写入Memcache 至此,PHP的基础学习算是完成了,需要多做多学,方能提高!
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31
|