[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как обновить лучше таблицу.
sebastjan
Намутил а разобратся не получается.
создаю пустую таблицу

$kat=$_POST['kat'];#получаю название из формы
$sql = "CREATE TABLE `xxx`.`".$kat."` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`zagol_1` TEXT NOT NULL,
PRIMARY KEY (`id`))
ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;"
;


Таблица изначально пустая, пытаюсь загнать туда данные путём UPDATE из формы.
переменная $tem получаю по гет.

mysql_query("UPDATE `".$tem."` SET `zagol_1`='".mysql_real_escape_string($_POST['zagol_1'])."' ");


всё работает только в случае если были уже произведенны какие то записи в этой таблице.
Если ещё небыло записей и только созданна то и не работает UPDATE
Если использовать ИНСЕРТ то он дописывает а я хочу постоянно обновлять.



Спустя 2 минуты, 37 секунд (3.12.2011 - 02:29) inpost написал(а):
sebastjan
Если пусто, то не работает? Ошибка какая? mysql_error() ?

Спустя 5 минут, 49 секунд (3.12.2011 - 02:35) sebastjan написал(а):
Вообще ни каких оштибок, просто при выполнении АПДЕЙТ ничего не поисходит и запись не появляется.
Суть такая, создал таблицу, в другой форме накнопал и послал в эту таблицу с использованием АПДЕЙТ.
Но не работает до тех пор пака просто из МайАдмин не впишеш в таблицу тчо то и стерёшь.
может я неправильно создаю таблицу..?

Спустя 45 секунд (3.12.2011 - 02:36) inpost написал(а):
sebastjan
А добавляться не будет при UPDATE.
Может тебе надо: INSERT ON DUPLICATE UPDATE ?

Спустя 1 минута, 31 секунда (3.12.2011 - 02:37) sebastjan написал(а):
Цитата (inpost @ 2.12.2011 - 23:36)
sebastjan
А добавляться не будет при UPDATE.
Может тебе надо: INSERT ON DUPLICATE UPDATE ?

Спасибо ,сейчас попробую.

Спустя 2 минуты, 35 секунд (3.12.2011 - 02:40) sebastjan написал(а):
НЕ сработало.

Спустя 1 минута, 59 секунд (3.12.2011 - 02:42) inpost написал(а):
Если не существует, то запись будет добавлена, а если такая существует, то будет обновлены записи в ней. Тебе именно это и надо было? Если да, то значит неправильно использовал

Спустя 12 минут, 34 секунды (3.12.2011 - 02:54) sebastjan написал(а):
mysql_query("INSERT ON DUPLICATE UPDATE `sasass` SET `zagol_1`='".mysql_real_escape_string($_POST['zagol_1'])."' ");


Да именно хочу то что ты сказал.
Но что то не получается, где то синтаксис нарушен.
Точно не то намудрил у меня в справочнике ничего подобного по базам нет.

Спустя 3 минуты, 28 секунд (3.12.2011 - 02:58) Invis1ble написал(а):
первичный/уникальный ключ существует в таблице?
сорри, провтыкал smile.gif

Спустя 1 минута, 33 секунды (3.12.2011 - 02:59) Placido написал(а):

Спустя 1 минута, 4 секунды (3.12.2011 - 03:01) Invis1ble написал(а):
кстати, да laugh.gif

sebastjan, почему не используешь mysql_error() ?

Спустя 6 минут, 45 секунд (3.12.2011 - 03:07) sebastjan написал(а):
Цитата (Invis1ble @ 3.12.2011 - 00:01)
кстати, да :lol:

sebastjan, почему не используешь mysql_error() .
а вто если так, то конечно сразу выкинуло синтаксис кривой
mysql_query("INSERT ON DUPLICATE UPDATE `sasass` SET `zagol_1`='".mysql_real_escape_string($_POST['zagol_1'])."' ");

так БД ошибку не выдаёт при просто использованииАПДЕЙТ.
а вто если так, то конечно сразу выкинуло синтаксис кривой
mysql_query("INSERT ON DUPLICATE UPDATE `sasass` SET `zagol_1`='".mysql_real_escape_string($_POST['zagol_1'])."' ");

:)

Спустя 2 минуты, 56 секунд (3.12.2011 - 03:10) Invis1ble написал(а):
Причем тут просто UPDATE, ты ведь используешь запрос insert ... update - вот на нем и нужно смотреть ошибки wink.gif

Спустя 4 минуты, 41 секунда (3.12.2011 - 03:15) TranceIT написал(а):

INSERT INTO table (col) VALUES (value) ON DUPLICATE KEY UPDATE table SET col=value

Не уверен...

Спустя 1 минута, 40 секунд (3.12.2011 - 03:17) Invis1ble написал(а):
TranceIT
по ссылке выше описан синтаксис

Спустя 4 минуты, 27 секунд (3.12.2011 - 03:21) sebastjan написал(а):
Да по ссылке и учусь сейчас.
Спасибо всем, не знал про этот оператор.Старенький ман у меня.
Надо поискать пообширней и поновей.
inpost +
Invis1ble +
TranceIT +
Placido +

Спустя 1 час, 14 минут, 9 секунд (3.12.2011 - 04:35) sebastjan написал(а):
Вот - создана ранее таблица пустая ВВВ
Запускаю - это

include('modul/conect_bd.php');
$id=1;
$a="ddd";
$b="aaaa";
$c="vv";
mysql_query("INSERT INTO `BBB` (id, zagol_1, zagol_2, text_1) VALUES ('".$id."','".$a."','".$b."','".$c."')
ON DUPLICATE KEY UPDATE id='"
.$id."' ")or die (mysql_error());

вставка из перемиенных работает
Но стоит изменить знасения переменным чтоб обновить, ни чего не выходит.
Растолкуйте мне что значит ON DUPLICATE KEY UPDATE.
я так понял это ключ по которому определяем строку в таблице чтоб обновить.
Я задал по ID=1.
Так как хочу чтоб только одна строка в таблице с этим ID обновлялась.
Не хватает мозгов осмыслить.



Спустя 19 минут, 2 секунды (3.12.2011 - 04:54) Invis1ble написал(а):
sebastjan
Цитата
Растолкуйте мне что значит ON DUPLICATE KEY UPDATE.

ты указываешь в блоке INSERT данные, мускул смотрит - если там присутствует первичный/уникальный ключ и в таблице есть запись с ключом с таким значением - выполняется UPDATE (обновление существующей записи с таким ключом) согласно данным в блоке UPDATE, иначе (если записи с таким ключом еще нет) - выполняется INSERT (добавление новой записи).



Спустя 11 минут, 5 секунд Invis1ble написал(а):

в твоем случае, если я правильно понял, что тебе нужно, запрос будет выглядеть примерно так:
$query =
"INSERT INTO `BBB`
(`id`, `zagol_1`, `zagol_2`, `text_1`)
VALUES
("
. $id . ", '" . $a . "', '" . $b . "', '" . $c . "')
ON DUPLICATE KEY UPDATE
`zagol_1` = '"
. $a . "',
`zagol_2` = '"
. $b . "',
`text_1` = '"
. $c . "'";

Спустя 6 часов, 57 минут, 27 секунд (3.12.2011 - 11:52) sebastjan написал(а):
Invis1ble Спасибо большое, заработало.
Я по глупости вставлял
ON DUPLICATE KEY UPDATE
VALUE(`zagol_1` = '" . $a . "',
`zagol_2` = '" . $b . "',
`text_1` = '" . $c . "')



Спустя 42 минуты, 8 секунд (3.12.2011 - 12:34) Michael написал(а):
Цитата (sebastjan @ 3.12.2011 - 01:27)
mysql_query("UPDATE `".$tem."` SET `zagol_1`='".mysql_real_escape_string($_POST['zagol_1'])."' ");


Вот это конечно убило... UPDATE на таблицу без WHERE :blink:

Цитата (sebastjan)
всё работает только в случае если были уже произведенны какие то записи в этой таблице.
Если ещё небыло  записей и только созданна то и не работает UPDATE
Если использовать ИНСЕРТ то он дописывает а я хочу постоянно обновлять.

мда, он не понимает разницы между вставкой новой строки и редактированием существующей... Кто бы мог подумать, 9 месяце вроде чем то занимается ...

p.s. REPLACE кстати тоже покатит.


Спустя 55 минут, 35 секунд (3.12.2011 - 13:29) sebastjan написал(а):
Michael
Цитата
Вот это конечно убило... UPDATE на таблицу без Вот это конечно убило... UPDATE на таблицу без WHERE 

В таблице только одна запись так тчо без WHERE всё работало при условии что запись редактировалась ранее. Но если таблица созданна пустая то без ON DUPLICATE KEY UPDATE
ни как.
Цитата
мда, он не понимает разницы между вставкой новой строки и редактированием существующей... Кто бы мог подумать, 9 месяце вроде чем то занимается ...

Вроде чем то занимаюсь rolleyes.gif
Стараюсь как могу. sad.gif

Спустя 30 минут, 1 секунда (3.12.2011 - 13:59) Michael написал(а):
Цитата (sebastjan)
В таблице только одна запись

Тебе и linker и я говорили в прошлой твоей теме - со структурой у тебя не лады. Таблица БД не создается чтобы хранить только одну запись.

Спустя 6 минут, 49 секунд (3.12.2011 - 14:06) sebastjan написал(а):
Michael
Да согласен я со всем, действительно пока не лады с построением логики в таблицах.
Сам себя ругаю.


Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.