1

ライセンスシステムをテストしようとしているプロジェクトのキーを持っています(ただの楽しみと学習のため)、私が遭遇すると思った部分は、キーを配布する方法です。データベースに約 100 個のキーがあり、それらを配布する最善の方法を見つけようとしています。データベースは次のようにレイアウトされています。

ID (Auto Increment) | key

PDO ライブラリを使用して、ID で時系列に並べる最も効果的な方法は何ですか? でも、時系列に並べたとしても、渡された鍵を削除したらどうやって時系列に並べるの?それともランダムなID番号ですか?これらのキーを配布する最も効果的な方法については、どうすればよいかわかりません。

4

2 に答える 2

2

あなたの質問を正しく理解していれば...

PDO を介して次のクエリを試すことができます。

SELECT * FROM `table-name`
ORDER BY `ID` ASC

次に、実行の戻りから while() ループで行をステップ実行すると、要求したように時系列になります。

ID # 10 のキーを削除した場合のように、ID を失う限り、テーブルは返された行 ID で 9 から 11 にジャンプします。新しいキーを追加する場合、挿入時にその ID を特に指定しない限り #10 は使用されません。

編集:あなたの質問の言い回しから、キーのIDをどのように設定するかについて心配しているようです。すでにご存じかもしれませんが、Auto Increment があるため、新しいキーを挿入すると ID が自動的に生成され、新しいキーには (最後に挿入されたキーの ID) + 1 の ID が割り当てられます。

于 2013-01-04T01:23:07.927 に答える
1

Chronology は正確には PDO の機能ではありません。さらに言えば、使用しているデータベース ドライバーが何であれ、それはスキーマの問題です。

通常、データベース構造で一般的に使用されるフィールドは、データベースでレコードが作成された時刻を保持する「タイムスタンプ」または「作成済み」フィールドです。これらのフィールドは、MySQL データ型TIMESTAMP(この場合、ドライバーは Unix エポックからの秒数を返します)、またはDATETIME(この場合、ほとんどのドライバーは言語のネイティブ DateTime オブジェクトが存在する場合はそれを返そうとします) です。タイムスタンプ フィールドは、サーバーでレコードが作成された正確な時刻を記録し、変更時に を使用して更新できますON UPDATE CURRENT_TIMESTAMP。したがって、これをスキーマに追加することをお勧めします。

データベースにそのようなフィールドがある場合、次を使用してクエリをいつでも並べ替えることができます。

SORT BY timestamp_field_name ASC

また、「配布」によって、このキーを何らかのクエリパラメーターとして使用することで一部のデータが公開されることを意味する場合、特にこれが「ライセンス」である場合、説明した正確な理由で単調な主キーを使用しませんこれは、DRM タイプのものを意味する場合、おそらく複雑な文字列を生成するはずです。フィールド内のハッシュされたタイムスタンプUNIQUE、または php関数は、キー制限を使用してデータベース フィールドuniqidに格納できる値を生成できます。これは、あなたが説明した目標を理解した場合です。VARCHARUNIQUE

于 2013-01-04T01:24:06.703 に答える