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


Автор: agatha 13.6.2007, 08:21
update не работает.  ошибок не выдает.

Необходимо чтобы вместе с id обновлялись поля kod, kod2, которые = id. 
Код

<?php
$id=$_POST['id'];
$id2=$_POST['id2'];
if (!$id || !$id2)
{
echo 'Ошибка ввода.';
exit;
}
if (!get_magic_quotes_gpc())
{
$id = addslashes($id);
$id2 = addslashes($id2);
}
$connection = mysql_connect('localhost','base07','') or die ("Error: Could not connect to database.");
$db = mysql_select_db ('sotrud',$connection) or die ("Error: Could not connect to base.");
$query= "UPDATE str  SET 'id'='$id2', 'kod'='$id2' ,  'kod2'='$id2' wheRE id='$id'  or  kod='$id' or kod2='$id'"  or die(mysql_error()); 
$result = mysql_query($query);
if ($result) echo "обновление завершено."; 
mysql_close($connection);
?>

Автор: Serkys 13.6.2007, 08:38
А поле `id` у тебя наверное первичный ключ (PRIMARY)? Нельзя его обновлять.
Цитата

$query= "UPDATE str  SET 'id'='$id2', 'kod'='$id2' ,  'kod2'='$id2' wheRE id='$id'  or  kod='$id' or kod2='$id'"  or die(mysql_error()); 
$result = mysql_query($query);

Замени на:
Код

$query= "UPDATE str  SET 'id'='$id2', 'kod'='$id2' ,  'kod2'='$id2' wheRE id='$id'  or  kod='$id' or kod2='$id'";
$result = mysql_query($query)  or die(mysql_error()); 

Автор: agatha 13.6.2007, 08:45
Цитата(Serkys @ 13.6.2007,  08:38)
А поле `id` у тебя наверное первичный ключ (PRIMARY)? Нельзя его обновлять.

primary) и это одно из условий. 


выход? 

Автор: -=Ustas=- 13.6.2007, 12:53
Примари нельзя апдейтить! А если у тебя есть такой бредовый запрос:
Цитата(agatha @  13.6.2007,  08:21 Найти цитируемый пост)
"UPDATE str  SET 'id'='$id2', 'kod'='$id2' ,  'kod2'='$id2' wheRE id='$id'  or  kod='$id' or kod2='$id'"

то у тебя проблемы с постановкой и решением задачи.

Автор: Serkys 13.6.2007, 14:02
Цитата(agatha @  13.6.2007,  08:45 Найти цитируемый пост)
выход?  

Изменить алгоритм.

Автор: sTa1kEr 13.6.2007, 17:07
Цитата(Serkys @  13.6.2007,  08:38 Найти цитируемый пост)
А поле `id` у тебя наверное первичный ключ (PRIMARY)? Нельзя его обновлять.

Цитата(-=Ustas=- @  13.6.2007,  12:53 Найти цитируемый пост)
Примари нельзя апдейтить!

С каких это пор? PRIMARY KEY всегда должен быть уникальным, но обновлять его никто не запрещал. Это в MSSQL нельзя обновлять поля со свойством identity (аналог auto increment в MySQL), а в MySQL можно, если оно останется уникальным.
Цитата(agatha @  13.6.2007,  08:21 Найти цитируемый пост)

Код

$query= "UPDATE str  SET 'id'='$id2', 'kod'='$id2' ,  'kod2'='$id2' wheRE id='$id'  or  kod='$id' or kod2='$id'"  or die(mysql_error());


Проблема в том, что поля надо заключать в символ ` , а все, что заключается в одинарную кавычку интерпретируется MySQL как строковая константа. По этому MySQL и не выдает никаких ошибок, т.к. синтактически этот запрос корректный, но не имеет никакого смысла. Правильный запрос:
Код

$query= "UPDATE `str` SET `id`='$id2', `kod`='$id2' , `kod2`='$id2' WHERE `id`='$id'  OR  `kod`='$id' OR `kod2`='$id'";


Автор: Serkys 14.6.2007, 00:15
Цитата(sTa1kEr @  13.6.2007,  17:07 Найти цитируемый пост)
С каких это пор? PRIMARY KEY всегда должен быть уникальным, но обновлять его никто не запрещал.

В такие подробности я не вдавался, но знаю что обновление PRIMARY KEY - чёткий признак плохого алгоритма.

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