Не работает UPDATE

forward

Новичок
Не работает UPDATE

Версии: PHP - 5.1.5.5, mySQL - 3.23, ОС - Windows XP SP2.

Есть необходимость изменить значения нескольких полей в таблице по сложным алгоритмам, данные для которых берутся из других полей этой же таблицы. Эти алгоритмы, как мне кажется, невозможно реализовать только внутри команды UPDATE.

В связи с этим решил делать так:

1. Делается выборка командой SELECT всех записей таблицы
2. В цикле по результату запроса по каждой строке:
2.1 на PHP вычисляются значения полей, которые необходимо занести
2.2 командой UPDATE эти значения вносятся в поля текущей строки таблицы

Для начала был сделан пробный скрипт, без вышеуказанных вычислительных алгоритмов, только для проверки возможности запуска команды UPDATE внутри цикла, он запускается с консоли виндов, при этом UPDATE не хочет модифицировать значение поля.

Код скрипта:
PHP:
<?php
$db_name="ns02";//база данных
$table="t01";//таблица
$host="localhost";//хост
$user="";//логин 
$pass="";//password
$link=mysql_connect($host,$user,$pass) or die(mysql_errno($link).mysql_error($link));
//выбираем базу данных
$db=mysql_select_db($db_name,$link) or die(mysql_errno($link).mysql_error($link));

$guery = "SELECT * FROM t01";
$artm = array();
$counter = 0;
$result=mysql_query($guery, $link) or die(mysql_errno($link).mysql_error($link));

//сбрасываем значения поля tm в массив
while($data=mysql_fetch_assoc($result)){
    echo $data["tm"]," : ";
    $artm[counter] = $data["tm"];
    $counter+=$counter; 
}

//освободить выделенную под результат выборки память
mysql_free_result($result);

//в цикле по массиву пытаемся изменить данные
foreach ($artm as $item) {
    $query2 = "UPDATE `t01` SET `oi1` = 1 WHERE tm = "."'".$item."'";
    echo $query2;
    mysql_query($guery2, $link) or die(mysql_errno($link).mysql_error($link));
}

mysql_close($link);
?>
Команды echo выводят следующее:

0430 : 0415 : 0400 : 0345 : 0330 : 0315 : 0300 : 0245 : 0230 : 0215 : 0200 : 0145 : 0130 : 0115 : 0100 : 0045 : 0030 : 0015 : 0000 : UPDATE `t01` SET `oi1` = 1 WHERE `tm` = '0000'1065Query was empty

Здесь:
> до слова UPDATE - значения поля tm, выводимые в цикле по запросу;
> UPDATE `t01` SET `oi1` = 1 WHERE `tm` = '0000' - программно сформированный текст запроса, причем видно, что второй цикл был выполнен только один раз, далее цикл явно не срабатывает, иначе текст запроса был бы выведен несколько раз;
> 1065Query was empty - описание ошибки (в гугле ничего вразумительного по этому поводу не нашел).

Запрос из отладочной инфы запустил без PHP, на самом mySQL - сработал нормально, без ошибок, значение поля oi1 изменилось.
 
Сверху