(PERL) Помогите разобраться с функцией UPDATE

Anna85
Дата: 12.10.2006 09:52:31
Нужно отредактировать строчку, не могу совладать с синтаксисиом функции UPDATE.
Она не понимает что ее нужно перезаписать в тот же файл откуда она берется,
если приписываю под UPDATE еще и INSERT то записывает в тот файл в который надо, только не в нужную строку, она как бы прибавляет еще одну лишнюю строчку. Что делать вот для примера код с UPDATE
 $t = $Query->param( "write" );
                           
 if( defined $t )
  {  

$sth = $dbh->prepare("UPDATE document SET NUM_DOC_IN_EERD='$NUM_DOC_IN_EERD' WHERE NUM='$NUM'") or die "Cannot prepare: " . $dbh->errstr();
$sth->execute() or die "Cannot execute: " . $sth->errstr();
	   
foreach $i (1..1)
{
  print "<TR>";


  foreach $j (1..1)
    {
$sth = $dbh->prepare("SELECT * FROM document ORDER BY NUM") or die "Cannot prepare: " . $dbh->errstr();
$sth->execute() or die "Cannot execute: " . $sth->errstr();
while ( $row = $sth->fetchrow_hashref)

  {
   $NUM = $row->{'NUM'};
   $NUM_DOC_IN_EERD = $row->{'NUM_DOC_IN_EERD'};
   PrintMainForm();

    
    print <<"EOT";

    <td>
    <OPTION><A HREF="#" onClick="mainform.target='_self';mainform.EERD_NUM.value='$NUM_DOC_IN_EERD';mainform.numer.value=$NUM;mainform.action.value='edit';mainform.submit();return false;"><B>Редактировать</B></A></OPTION>   
    </td>

EOT
   print <<"EOT";

    <td>
     <OPTION><A HREF="#" onClick="mainform.target='_self';mainform.NUM_DOC_IN_EERD.value='$NUM_DOC_IN_EERD';mainform.num_docs.value=$NUM;mainform.action.value='del';mainform.submit();return false;"><B>Удалить</B></A></OPTION>   
    </td>

EOT



     
    $t = $row->{'NUM'};
  print <<"EOT";

    <td>
    <OPTION>$t</OPTION>
    </td>

EOT
    $t = $row->{'INPUT_NUM_DOC'};   
 print <<"EOT";
    
    <td>

    <OPTION>$t</OPTION>
.....................................
и такк далее может я в UPDATE пишу не те переменные?
LeXa NalBat
Дата: 12.10.2006 10:12:19
попробуйте добавить $sth->finish();
Anna85
Дата: 12.10.2006 10:25:53
$sth->finish(); не помогает. Попробовала распечатать UPdate (заполнила каждую)
ячейку цифрой 2- выдает
UPDATE document SET NUM_DOC_IN_EERD='2' WHERE NUM='2' 
Значит цифры определяются, не знаю что и делать...
oraweb
Дата: 12.10.2006 12:48:14
Anna85
$sth->finish(); не помогает. Попробовала распечатать UPdate (заполнила каждую)
ячейку цифрой 2- выдает
UPDATE document SET NUM_DOC_IN_EERD='2' WHERE NUM='2' 
Значит цифры определяются, не знаю что и делать...

Убрать ковычки NUM_DOC_IN_EERD=2 WHERE NUM=2
Black
Дата: 12.10.2006 12:54:27
oraweb
Anna85
$sth->finish(); не помогает. Попробовала распечатать UPdate (заполнила каждую)
ячейку цифрой 2- выдает
UPDATE document SET NUM_DOC_IN_EERD='2' WHERE NUM='2' 
Значит цифры определяются, не знаю что и делать...

Убрать ковычки NUM_DOC_IN_EERD=2 WHERE NUM=2

зачем?
oraweb
Дата: 12.10.2006 13:01:07
Николай aka Motodor
oraweb
Anna85
$sth->finish(); не помогает. Попробовала распечатать UPdate (заполнила каждую)
ячейку цифрой 2- выдает
UPDATE document SET NUM_DOC_IN_EERD='2' WHERE NUM='2' 
Значит цифры определяются, не знаю что и делать...

Убрать ковычки NUM_DOC_IN_EERD=2 WHERE NUM=2

зачем?

Ковычки уместны если поле NUM_DOC_IN_EERD текстовое и наоборот если int(number)
Black
Дата: 12.10.2006 13:07:02
oraweb
Ковычки уместны если поле NUM_DOC_IN_EERD текстовое и наоборот если int(number)

Так для Number как раз ненужны кавычки, если передано число ... а в обще от ситуации надо смотреть
oraweb
Дата: 12.10.2006 13:12:55
Николай aka Motodor
oraweb
Ковычки уместны если поле NUM_DOC_IN_EERD текстовое и наоборот если int(number)

Так для Number как раз ненужны кавычки, если передано число ... а в обще от ситуации надо смотреть

О чем и речь. А ситуация простая. Если NUM_DOC_IN_EERD - числовое поле и к тому же на нем висит индекс, то про него можно забыть, если передал значение в кавычкак ('2') и это "в лучшем случае", а в худшем, имеем то, что и является темой этого сообщения.
Anna85
Дата: 12.10.2006 13:40:11
Ребята, честное слово кавычки здесь ни при чем, они нужны конечно.
Но программа, что со строчкой в кавычках, что без нее
не записывает в файл нужную строчку.
Что еще может послужить проблемой?
oraweb
Дата: 12.10.2006 13:50:06
Anna85
Ребята, честное слово кавычки здесь ни при чем, они нужны конечно.
Но программа, что со строчкой в кавычках, что без нее
не записывает в файл нужную строчку.
Что еще может послужить проблемой?

Вам, сударыня, видней. Если "они нужны конечно" и поля NUM_DOC_IN_EERD, NUM тесктовые, то попробуйте
... SET NUM_DOC_IN_EERD='".$NUM_DOC_IN_EERD."' WHERE NUM='".$NUM."' - должно работать.