2010-11-04 6 views
0

Ok, donc j'ai une requête normale qui insère dans la base de données.PHP: utiliser id dans une autre colonne

mysql_query("INSERT INTO users_pm_in (uID, msg) VALUES ('$uID', '$msg')"); 

Maintenant, ce tableau a également une colonne appelée "id" avec auto_increment & clé primaire.

Lorsqu'il est inséré, il crée automatiquement un numéro pour la colonne de la ligne. Maintenant, je veux ce numéro, et le mettre dans la boîte de dialogue de la colonne, dans la même rangée. Ainsi, la ligne insérée a le même numéro/id dans "id" et "dialog". Comment puis je faire ça?

+4

Pourquoi diable voudriez-vous faire cela? Ça sonne comme une mauvaise idée ... – fredley

+1

Si vous voulez que votre ID soit identique à id, pourquoi utilisez-vous un champ différent? – Nigel

+0

J'espère que vous avez assaini ces variables avant de les placer dans la chaîne de requête. Sinon, vous allez avoir beaucoup de plaisir lorsque les gens commencent à écrire des messages contenant des guillemets simples. – Gordon

Répondre

5

Je ne sais pas si cela peut se faire dans une requête (ou pourquoi vous voulez même faire), mais vous pouvez utiliser ceci:

mysql_query("INSERT INTO users_pm_in (uID, msg) VALUES ('$uID', '$msg')"); 
mysql_query("UPDATE users_pm_in SET dialog = id WHERE id = '".mysql_insert_id()."'); 

Assurez-vous d'échapper aux variables correctement aussi.

+0

ok merci. Variables, $ uID et $ msg? ils sont real_escape. – Johnson

1

Je pense qu'il serait plus facile de supprimer l'auto-incrémentation et d'ajouter la valeur de dialogue id + vous-même.

1

Check out mysql_insert_id()

1

Vous pouvez le faire, barbante ce n'est pas très efficace ...

Supose vous avez cette table:

CREATE TABLE `test` (
    `id` INT(10) NOT NULL AUTO_INCREMENT, 
    `a` INT(10) NULL DEFAULT '0', 
    `b` INT(10) NULL DEFAULT '0', 
    PRIMARY KEY (`id`) 
) 
ENGINE=MyISAM 
ROW_FORMAT=DEFAULT 

Vous pouvez effectuer la requête suivante:

INSERT INTO test (a, b) SElECT IFNULL((MAX(id) +1),1), 200 FROM test; 

Notez que "200" est une valeur aléatoire qui sera insérée sur la colonne "b".

Questions connexes