Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> update||mysql 
:(
    Опции темы
agatha
Дата 13.6.2007, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 30.5.2007

Репутация: нет
Всего: нет



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);
?>


Это сообщение отредактировал(а) agatha - 13.6.2007, 08:26
PM MAIL   Вверх
Serkys
Дата 13.6.2007, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 1
Всего: 22



А поле `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()); 

PM MAIL   Вверх
agatha
Дата 13.6.2007, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 30.5.2007

Репутация: нет
Всего: нет



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

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


выход? 
PM MAIL   Вверх
-=Ustas=-
Дата 13.6.2007, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 17
Всего: 69



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

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



--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Serkys
Дата 13.6.2007, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 1
Всего: 22



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

Изменить алгоритм.
PM MAIL   Вверх
sTa1kEr
Дата 13.6.2007, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 9
Всего: 146



Цитата(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'";



Это сообщение отредактировал(а) sTa1kEr - 13.6.2007, 19:41
PM MAIL   Вверх
Serkys
Дата 14.6.2007, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 1
Всего: 22



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

В такие подробности я не вдавался, но знаю что обновление PRIMARY KEY - чёткий признак плохого алгоритма.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0503 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.