2012-04-06 2 views
0

J'aime créer un nom de fichier spécifique pour un fichier qui sera créé par l'entrée des champs de la requête d'insertion. j'aime avoir une clé unique pour ça. cette clé consiste en un user_id, un horodatage et à la fin de celle-ci, il doit être placé l'insert_id généré à partir de la requête insert. il devrait être placé l'auto_increment non. pour la fin de ma variable générée. Le problème est que je crée une variable avant que la requête d'insertion tiré de telle sorte que cette variable sera une partie de la requête d'insertion comme:comment obtenir insert_id dans une variable avant d'insérer une requête

$get_num = $db->query("SELECT COUNT (*) FROM tableA"); 
$num = $query->fetch_assoc(); 
$end = $num + 1; 

$file_id = $id .".". time() .".". $end; 

$insert = $db->query("INSERT INTO tableA (file_id, a, b, c) VALUES('".$file_id."','".$a."','".$b."','".c."')"); 

Répondre

2

En fait, oublier ce que j'ai écrit précédemment. Vous ne pouvez pas compter sur COUNT qui travaille pour vous, car que se passe-t-il lorsqu'une ligne est supprimée? Vous aurez des valeurs en double. Le meilleur pari pour vous est de créer d'abord la ligne, saisir l'insert_id, puis UPDATE l'id_fichier en utilisant la fonction que vous avez décrite précédemment. En fin de compte, vous devez quand même toujours utiliser deux requêtes, donc cela ne prend pas plus de ressources. De plus, vous ne faites plus d'opération COUNT.

Dans d'autres nouvelles, assurez-vous de lire sur SQLi, en fonction de l'origine de vos variables a, b, c.

0

Ceci est une mauvaise idée. Faites votre insertion, puis utilisez LAST_INSERT_ID. Sinon, comme l'a noté @AuthmanApatira, vous pourriez avoir le mauvais identifiant. Le PHP pour cela est mysql_insert_id(). Notez également que si votre colonne d'index est auto_increment, vous n'avez même pas besoin de vous inquiéter de l'id; le db s'en charge pour vous. Vous pouvez l'obtenir après l'exécution de votre requête.

Questions connexes