Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > update нескольких строк


Автор: SeregaGREY 3.3.2012, 13:07
я заколебался.
что я делаю не так?

вот код:
Код

$result=mysql_query("select * from clients where status='active' and balance > '0';");
if($result && mysql_num_rows($result)>0){

while ($line = mysql_fetch_array($result, MYSQL_NUM)) {

$spishem = $line[3]/30; // Сколько спишем денег в день (тариф делим на 30 дней в мес.)
mysql_query("update clients set balance=balance-".$spishem.";");
}

почему оно то обновляет только последнюю строку в таблице то обновляет обе на одинаковое значение?
я же всё делаю во while, то есть логика такая что оно для каждой строки рассчитает
Код

$spishem = $line[3]/30;

и сделает
Код

mysql_query("update clients set balance=balance-".$spishem.";");

а оно лил не длоя каждой или для всех строк одно значение считает

Автор: $дмитрий 3.3.2012, 14:34
Цитата

а оно лил не длоя каждой или для всех строк одно значение считает 

Ну правильно, запрос "update clients set balance=balance-".$spishem.";" означает обновить значение balance во всей таблицы clients

Нужно прописать условие, какие именно строки следует обновить. Примерный запрос:
Код

mysql_query("update clients set balance=balance-".$spishem." where id = '".$line[0]."';");

Автор: SeregaGREY 3.3.2012, 20:10
Цитата($дмитрий @ 3.3.2012,  14:34)
Цитата

а оно лил не длоя каждой или для всех строк одно значение считает 

Ну правильно, запрос "update clients set balance=balance-".$spishem.";" означает обновить значение balance во всей таблицы clients

Нужно прописать условие, какие именно строки следует обновить. Примерный запрос:
Код

mysql_query("update clients set balance=balance-".$spishem." where id = '".$line[0]."';");

прикольно. сработало. жаль сам не додумался:)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)