UPDATE CattleProds
SET SheepTherapy=(ROUND((RAND()* 10000),0))
WHERE SheepTherapy IS NULL
Si je fais ensuite une SÉLECTION, je vois que mon nombre aléatoire est identique dans chaque ligne. Des idées pour générer des nombres aléatoires uniques ?
UPDATE CattleProds
SET SheepTherapy=(ROUND((RAND()* 10000),0))
WHERE SheepTherapy IS NULL
Si je fais ensuite une SÉLECTION, je vois que mon nombre aléatoire est identique dans chaque ligne. Des idées pour générer des nombres aléatoires uniques ?
Au lieu de rand()
, utilisez newid()
, qui est recalculé pour chaque ligne du résultat. La façon habituelle est d'utiliser le modulo de la somme de contrôle. Notez que checksum(newid())
peut produire -2,147,483,648 et provoquer un dépassement d'entier sur abs()
, nous devons donc utiliser modulo sur la valeur de retour checksum avant de la convertir en valeur absolue.
UPDATE CattleProds
SET SheepTherapy = abs(checksum(NewId()) % 10000)
WHERE SheepTherapy IS NULL
Cela génère un nombre aléatoire compris entre 0 et 9999.
require_once('db/connect.php');
//rand(1000000 , 9999999);
$products_query = "SELECT id FROM products";
$products_result = mysqli_query($conn, $products_query);
$products_row = mysqli_fetch_array($products_result);
$ids_array = [];
do
{
array_push($ids_array, $products_row['id']);
}
while($products_row = mysqli_fetch_array($products_result));
/*
echo '<pre>';
print_r($ids_array);
echo '</pre>';
*/
$row_counter = count($ids_array);
for ($i=0; $i < $row_counter; $i++)
{
$current_row = $ids_array[$i];
$rand = rand(1000000 , 9999999);
mysqli_query($conn , "UPDATE products SET code='$rand' WHERE id='$current_row'");
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.