2010-03-27 8 views
0

Je veux prendre l'identifiant de l'élément le plus récent dans une base de données, l'incrémenter de un et insérer ce nouvel identifiant dans une autre table.Comment insérer le dernier identifiant d'une table dans une autre table dans MySQL?

J'ai essayé:

$select = mysql_query("SELECT id FROM tableName ORDER BY id DESC"); 

while ($return = mysql_fetch_assoc($select)) { 

    $id = $return['id']; 
    $newId = $id++; 

} 

mysql_query("INSERT INTO anotherTable (someColumn) VALUES ('$newId')"); 

Mais cela n'a pas fonctionné. Comment cela peut-il être fait?

+0

Pourquoi vous en avez besoin? Pourquoi n'utilisez-vous pas la fonctionnalité d'auto-incrustation? –

+0

Y a-t-il un message d'erreur spécifique? $ NewId sera égal à $ id ici. '$ id ++' n'augmentera que la valeur de $ id APRES l'assignation. – jasonbar

+0

@ Col. Shrapnel J'utilise l'incrémentation automatique, ceci dans un but tout à fait différent. – James

Répondre

0

Vous pouvez essayer ceci:

$select = mysql_query("SELECT id FROM tableName ORDER BY id DESC"); 

if(! $select) 
    die("Query Failed"); 

$return = mysql_fetch_assoc($select); 
$id = $return['id']; 
$newId = ++ $id; // post increment does not work...use preincrement. 
mysql_query("INSERT INTO anotherTable (someColumn) VALUES ('$newId')"); 
+0

Grand, merci, je devais supprimer le moment. Pour une raison étrange, $ newId = $ id ++ ne fonctionne pas mais $ newId = $ id + 1. – James

+0

Dunno pourquoi cela a été modded -1 ... –

4

Vous ne devriez pas faire cela. Au lieu de cela, insérez un nouvel enregistrement dans tableName puis utilisez mysql_insert_id() pour capturer le nouvel ID, puis insérez-le dans anotherTable. De cette façon, vous éviterez les conditions de course qui pourraient se produire si vous le faisiez dans l'autre sens.

1

Pourquoi utilisez-vous une instruction while? Si vous voulez seulement l'identifiant le plus récent, prenez le tout en ..

$select = mysql_query("SELECT id FROM tableName ORDER BY id DESC"); 

$return = mysql_fetch_assoc($select); 

$id = $return['id']; 
$newId = $id + 1; 

mysql_query("INSERT INTO anotherTable (someColumn) VALUES ('$newId')"); 
1

Utilisez mysql_insert_id() pour obtenir le dernier ID Inséré

Questions connexes