2010-06-23 4 views
0

Je suis un newbe ici et sur PHP; Soyez patient s'il vous plaît :-)Comment remplir un champ de tous les enregistrements d'une table MySQL avec uniqueid()?

J'ai une table MySQL avec 15 000 lignes; J'ai besoin de remplir un champ de celui-ci (varchar(15)) - pour être utilisé d'une manière similaire à une clé primaire - avec la fonction PHP uniqid().

L'algorithme est le suivant:

  1. positionnement à la première ligne (enregistrement); Générer une valeur avec la fonction uniqid();
  2. mettant à jour avec lui un champ vide de cet enregistrement;

Toutes ces trois étapes jusqu'à la fin de la table (tous les enregistrements).

Quel est le code PHP pour faire tout cela?

Répondre

2

Tout d'abord, 15 000 lignes ne sont pas très nombreuses. Donc, cela pourrait être fait de plusieurs façons. Deuxièmement, il n'y a pas de concept tel que «première rangée» ou «deuxième rangée» ou «dernière rangée» dans SQL. Donc, votre algorithme ne fonctionnera pas, à moins que vous ne disiez la première ligne de votre ensemble d'enregistrements actuellement saisi, ou votre première ligne dans votre curseur.

En tout cas, je ne le ferais pas de cette façon. Je le ferais en deux étapes, en créant une table avec le format exact que vous voulez, mais avec le champ ID étant un champ d'auto-incrément, puis insert into newtable select * from oldtable order by something

Enfin, vous dites que c'est un problème PHP, mais il On dirait que vous demandez une solution unique. Si c'est le cas, je le ferais simplement en SQL et en finirais avec, plutôt que d'essayer d'écrire PHP pour le faire.

0
$cnt = 0; 
$result = mysql_query('SELECT COUNT(*) AS cnt FROM table'); 
if (($row = mysql_fetch_assoc($result)) !== false) { 
    $cnt = $row['cnt']; 
} 
$ids = array(); 
$num = 0; 
while ($num < $cnt) { 
    $id = uniqid(); 
    while(in_array($id, $ids)) { 
     $id = uniqid(); 
    } 
    mysql_query('UPDATE table SET the_column_you_need_to_update='.$id.' LIMIT 1 OFFSET '.$num); 
    $num++; 
} 
+0

Bonjour, merci pour votre réponse. Il répond correctement à ma requête. Devinez le même fil posté dans des forums de code PHP similaires obtenu seulement une autre bonne réponse !! Merci. Bon forum d'aide ici !! Cypherinfo. – user374324

Questions connexes