2015-07-21 1 views
-1

Я хочу, чтобы обновить значения в столбце stemp, но все они должны быть разными и случайным образом между 30 и 70.Как обновить несколько случайных записей в одном столбце сразу в mysql?

for($i=0;$i<=30;$i++) 
{ 
    $temp= mt_rand(30,70); 
    mysqli_query($con,"UPDATE sensor SET stemp= $temp"); 
} 
+0

http://stackoverflow.com/questions/14798640/creating-a-random-number-using-mysql –

+0

BTW: Вы знаете, что вы всегда обновляете все записи, так как у вас нет предложения WHERE? – Rizier123

ответ

2

Вы также можете использовать RAND() функцию в MySQL:

mysqli_query($con, "UPDATE sensor SET stemp=ROUND(RAND() * 40) + 30"); 

Сведя в петлю не имеет смысла, либо, так как вы, кажется, не имеют какой-либо вид WHERE условия в вашем update, поэтому все записи будут обновляться каждый раз.

+0

Что можно сделать для обновления после каждых 10 секунд – bhishaj

+0

Возможно, запустите задание cron, которое выполняет скрипт PHP каждые 10 секунд? http://stackoverflow.com/questions/2689284/executing-php-with-crontab – martynasma

1

Я думаю, что вы хотите изменить свою логику немного:

Прежде создать массив от 30 до 70 с range(). Затем shuffle() массив и возьмите из него array_slice(). При этом у вас есть 30 элементов, которые вы можете прокрутить по обновлению записей в db. Как это:

<?php 

    $arr = range(30, 70); 
    shuffle($arr); 
    $update = array_slice($arr, 0, 30); 

    foreach($update as $v) 
     mysqli_query($con, "UPDATE sensor SET stemp = $v"); 

?> 
Смежные вопросы