Не могу разобраться с запросом

Давут
Дата: 21.08.2012 09:49:14
<?php
$db='10.5.12.6:/db/SED Rozisk/2012_rozisk.fdb';
$dbuser='sysdba';
$dbpass='masterkey';
$constr = ibase_connect($db,$dbuser,$dbpass);
$query = "SELECT ID_SNILS FROM IP";
$result = ibase_query($constr, $query);
while($result_row = ibase_fetch_row($result))
{
   $ID=$result_row[0];
   $OPFR=iconv("CP1251","UTF-8",$result_row[1]);
   $reg='/^\w{5}\s\№\d{9}\s\(\w{1}\d{6}\)+$/iu';
   if (preg_match($reg, $OPFR)) 
   {
      $ID_SNILS=substr($OPFR, -19, -10);
      $query = "UPDATE IP SET (ID_SNILS=$ID_SNILS)";
      ibase_query($constr, $query);
   }
   else {
      $ID_SNILS="";
      $query = "UPDATE IP SET (ID_SNILS=$ID_SNILS)";
      ibase_query($constr, $query);
   }   
}
ibase_close($constr);
?>

смысл этого скрипта таков: Есть таблица IP. С нее вытягиваем по первому запросу поле содержимое полей ID_SNILS. Затем сравниваем с регулярным выражением, если оно соответствует ему то обновляем значение поля(если было СНИЛС №132561026 (T010101), то преобразовать его в 132561026, т.е. отсекаю ненужное и обновляю значение в таблице и так прохожусь по всем записям, иначе же если условие не выполнилось оставляю поле пустым.)
Проблема такова: не работают скрипты на обновление UPDATE.
Выходит ошибка:
Warning: ibase_query(): Dynamic SQL Error SQL error code = -104 Token unknown - line 1, column 15 ( in /var/www/index.php on line 44)
Если кто знает объясните в чем проблема.
wadman
Дата: 21.08.2012 10:07:55
На скобку ругается в update. И я сругнусь: откуда такой синтаксис?

Update some_table set some_value=some_other_value where some_id = id


При чем where очень даже обязательно, иначе заменишь на новое значение во всей таблице.
Граур Станислав
Дата: 21.08.2012 10:09:37
Давут, этот update по твоему должен обновить одну (текущую) запись в таблице или все?

UPDATE IP SET (ID_SNILS=$ID_SNILS)
wadman
Дата: 21.08.2012 10:16:26
Давут, если тестируешь на продуктиве, то бекап обязательно перед запуском сделай.
Cobalt747
Дата: 21.08.2012 10:51:29
Давут,
Это для какой госконторы ты пишешь?
Симонов Денис
Дата: 21.08.2012 11:37:25
Странно что оно вообще до этой строчки дошло. Поидее упасть должно было уже здесь.

$OPFR=iconv("CP1251","UTF-8",$result_row[1]);


Т.к. в хапросе запрашивается одно поле

SELECT ID_SNILS FROM IP
Давут
Дата: 21.08.2012 14:32:11
Граур Станислав,

Ну скрипт проходится по всем записям по полю СНИЛС. Если значение в поле СНИЛС такое СНИЛС №132561026 (T010101), то вытянуть чисто цифры 132561026. Записей в таблице на 300 000 и у каждого человека свой СНИЛС.
Давут
Дата: 21.08.2012 14:35:27
wadman,

копия есть)))

Cobalt747
пишется для службы судебных приставов

Симонов Денис
это описка. Оригинальный код такой
<?php
$db='10.5.12.6:/db/SED Rozisk/2012_rozisk.fdb';
$dbuser='sysdba';
$dbpass='masterkey';
$constr = ibase_connect($db,$dbuser,$dbpass);
$query = "SELECT ID_SNILS FROM IP";
$result = ibase_query($constr, $query);
while($result_row = ibase_fetch_row($result))
{
$ID=$result_row[0];
$OPFR=iconv("CP1251","UTF-8",$result_row[0]);
$reg='/^\w{5}\s\№\d{9}\s\(\w{1}\d{6}\)+$/iu';
if (preg_match($reg, $OPFR))
{
$ID_SNILS=substr($OPFR, -19, -10);
$query = "UPDATE IP SET (ID_SNILS=$ID_SNILS)";
ibase_query($constr, $query);
}
else {
$ID_SNILS="";
$query = "UPDATE IP SET (ID_SNILS=$ID_SNILS)";
ibase_query($constr, $query);
}
}
ibase_close($constr);
?>
oleg_m
Дата: 21.08.2012 15:22:45
Давут
у каждого человека свой СНИЛС.

с таким запросом - ненадолго
Давут
Дата: 21.08.2012 15:30:05
oleg_m,

почему