1

オンライン注文の割り当てとして基本的な eshop を作成しようとしています (使用するためではなく、PhP と MySQL の使用方法を学ぶためです)。私の最初のドラフトには、すべての基本機能を備えた非常に単純なテーブルがありました。しかし、教授は、1 つのアイテムが複数のカテゴリに属する​​ことができるように製品を設定するように求めました (最初は単純なルックアップ テーブルとしてカテゴリ テーブルを持っていました)。DB スキーマを次のように変更しました。

製品の DB スキーマ

残りの PhP と MySQL のコマンドとクエリを変更するのはそれほど難しいことではありませんでしたが、新しい製品を追加したり、それにカテゴリを追加したりする必要があると行き詰まりました。以前はphpのカテゴリからカテゴリIDを取得し、<select>それを変数としてmysqlに挿入していましたが、実際に挿入される前に新しいアイテムID(自動インクリメント)がないため、このデータベースではできません商品表です。

私が思いつく唯一の解決策は、製品をそのテーブルに挿入し、最新の日付でその ID を選択してから、ユーザーが選択したカテゴリ ID とともにその ID をすぐに挿入することです (これらはチェックボックスとともに HTML テーブルにあります)。しかし、私はそれが適切な方法だとは思いませんし、もっと洗練された手順があると確信しています。もしそうなら、誰かが私にどれについてのポインタを教えてくれますか?

4

3 に答える 3

0

クエリを使用して、テーブルの次の自動インクリメント値を見つけることができます

SELECT AUTO_INCREMENT AS nextAutoId 
FROM information_schema.TABLES 
WHERE TABLE_SCHEMA = '[database_name]' 
   AND TABLE_NAME = '[table_name]'

例えば:

test_database.test_table:
+------------+--------------+
| product_id | product_name |
+------------+--------------+
| 1          | Pies         |
| 2          | Chips        |
+------------+--------------+

SELECT AUTO_INCREMENT AS nextAutoId 
FROM information_schema.TABLES 
WHERE TABLE_SCHEMA = 'test_database' 
   AND TABLE_NAME = 'test_table' 

// Outputs: 3
于 2013-05-22T14:00:08.267 に答える
0

まったく逆に、選択する方法はエレガントで簡単です。挿入された商品 ID のみを取得することを除けば、そのために専用の API 呼び出しを使用して取得する必要があります。PHP のすべての mysql API には、対応するメソッドがあります。mysqli_insert_id()たとえば、

于 2013-05-22T13:53:34.017 に答える