[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не могу выполнить UPDATE
Страницы: 1, 2
юрьич
Здравствуйте. Пытаюсь писать скрипт и что то застрял из за нехватки знаний. Получаю данные с ютуба - видио, картинку, теги. Заношу всё зто в форму, записываю данные в базу. Вывожу на главной. Создал форму и страницу для редактирования. Вывожу туда данные по id ролика. Редактирую что нибудь, например title, а вот обновить не получается. Подскажите правильный синтаксис для UPDATE для данного случая. Перепробовал многое, но что то не выходит. Возможно ошибка в другом, но хоть это буду знать, что верно.
bret
Тут правильный синтаксис для UPDATE, а как делаете вы?

_____________
Бывает, ты ешь медведя, а бывает, что медведь ест тебя (с)
юрьич
Там я был. Мне не понятно что в SET подставить. * не выходит. Ведь не известно какое поле будет обновляться.
bret
Обновляйте все, делов-то
Звёздочка не прокатит, ваш вариант будет похож на

UPDATE persondata SET age=age*2, age=age+1;


_____________
Бывает, ты ешь медведя, а бывает, что медведь ест тебя (с)
юрьич
Пробую так
 $sql = "UPDATE cms_video SET age=age*2, age=age+1 WHERE id = '.$id.'";
$yes = $this->inDB->query($sql);
return true;

Белый экран
Valick
Цитата
Ведь не известно какое поле будет обновляться.

запрос надо собирать в соответсвии с данными

_____________
Стимулятор ~yoomoney - 41001303250491
юрьич
Сори, зто и не понятно. Как в запрос оформить массив?
Kusss
1) в цикле выполнить несколько обновлений для каждого id.
2) или в цикле собрать данные для одного запроса на обновление.

Если обновляете малое количество строк - 1 вариант, много - второй.

UPDATE table SET 
name = CASE id
WHEN 1 THEN 'name1'
WHEN 2 THEN 'name2'
END,
age = CASE id
WHEN 1 THEN 'number1'
WHEN 2 THEN 'number2'
END
WHERE id IN(1, 2)
юрьич
Спасибо, буду пробовать.
юрьич
Только вот что не очень понятно. Строка у меня одна-id.Но вот столбцов много,Мне надо для каждого прописать
WHEN 1 THEN 'name1' ?
И что это 1 и есть цифра 1 или номер столбца? name = CASE id тоже не ясно. Это команда или подставлять что то надо? Просто я не сталкивался ещё с таким синтаксисом.
Valick
юрьич, для многострочного обновления лучше использовать
INSERT ON DUPLICATE KEY UPDATE
но я так понимаю такой задачи перед вами пока не стоит, вам бы с однострочным обновлением разобраться


_____________
Стимулятор ~yoomoney - 41001303250491
юрьич
Этот UPDATE меня достал. Теперь, как в фильме, или я веду её под венец, или она меня в тюрьму. Дело в том, что я уже сомневаюся, что это можно сделать "стпндартными" методами. Везде в манах писанно, что следует указывать изменения столбцов. Что бы динамически это оформить нужна ф-ция. Ф-цию такую я обнаружил.Она сейчас в общем классе.
    public function update($table, $update_array, $id){

if(isset($update_array['id'])){
unset($update_array['id']);
}

// убираем из массива ненужные ячейки
$update_array = $this->removeTheMissingCell($table, $update_array);

$set = '';
// формируем запрос на вставку в базу
foreach($update_array as $field=>$value){
$set .= "{$field} = '{$value}',";
}
// убираем последнюю запятую
$set = rtrim($set, ',');

$this->query("UPDATE {$table} SET {$set} WHERE id = '{$id}' LIMIT 1");

if ($this->errno()) { return false; }

return true;

}


У себя в компоненте я делаю так
public function update($id, $vidar){


$this->inDB->update('cms_video', $vidar, $id );

return true;

}


Вот только с этими параметрами я и запутался. При выводе данных на редактирование в форму на выходе я имею массив:
$vidbar = array();
$item['user_id'] = $inUser->id;
...........................................
такого вида:Array ( [id] => 28 [album_id] => 0 [title] =>...

подключаю в скрипте так: $yes = $model->update($id, $item);

И вот как я не пытался у меня не выходит правильные параметры прописать. Может поможете разобраться.
Быстрый ответ:

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