4

2つの列を自動インクリメントできないため、テーブルの最後の行を取得し、列の+1値を取得して新しい行を挿入するには、クエリはどうなるでしょうか。

たとえば、私はという名前のテーブルを持っていますplayers

このように見えます:

id    player_id    player_name
 1      15           name1
 2      16           name2
 3      17           name3

フォームからプレーヤーを作成するための管理パネルを作成しようとしています。列 'id' は自動インクリメントしますが、player_id もインクリメントする必要がありますが、id と player_id は互いに同じではありません。

これに似たクエリ(少し理解できるように作成しました)

$sql="select top 1 * from `players`  order by id desc";
$result =mysql_query($sql);
while ($data=mysql_fetch_assoc($result)){
    $playerid=$data['player_id'];
    Insert into `players` (`player_id`,`player_name`) VALUE ('$playerid' + '1', 'name4');

}
4

3 に答える 3

4

このコードを試してください:

    $sql="SELECT player_id FROM `players` ORDER BY id DESC LIMIT 1";
    $result =mysql_query($sql);
    while ($data=mysql_fetch_assoc($result)){
        $playerid=$data['player_id']+1;
       }
mysql_query("Insert into `players` (`player_id`,`player_name`) VALUES ('".$playerid."','name4')");
于 2012-10-20T06:49:45.833 に答える
2

player_id次のクエリは、挿入時に次に利用可能なものを割り当てます。

INSERT INTO `players` (`player_id`, `player_name`)
SELECT MAX(`player_id`)+1, 'name4'
FROM `players`;
于 2012-10-20T06:13:53.213 に答える
0

この方法を試してください

  $sql="SELECT * FROM `players` ORDER BY id DESC LIMIT 1";
    $result =mysql_query($sql);
    $data=mysql_fetch_assoc($result);
    $playerid=$data['player_id']+1;

mysql_query("Insert into `players` (`player_id`,`player_name`) VALUES ('".$playerid."','name4')");
于 2012-10-20T06:07:24.607 に答える