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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скопировать строку таблицы, Создать точную копиб строки с новым id 
:(
    Опции темы
KonstRuctor
Дата 21.11.2011, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Всем привет!
Есть таблица с большим количеством полей. Иногда поля добавляются, иногда удаляются.
Есть скрипт, который делает только одну вещь -- точную копию записи с определенным id, присвоив строке новый id.
Сейчас я делаю так:
Код

$query = "SELECT * FROM table WHERE id = $idold"; // где $idold пришел из формы
$res = mysql_query($query);
$row = mysql_fetch_assoc($res);
// теперь вставляем данные
$query="INSERT INTO table ( поля через запятую ) VALUES ( '".$row["data1"]."', ....... )";
$res = mysql_query($query);
$idnew = mysql_insert_id(); // новый id

Существует ли какой-нибудь более элегантный способ?
При любом изменении кол-ва полей в таблице table приходится внимательно переписывать скрипт...
PM MAIL WWW ICQ   Вверх
ksnk
Дата 21.11.2011, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Цитата(KonstRuctor @  21.11.2011,  16:43 Найти цитируемый пост)
При любом изменении кол-ва полей в таблице table приходится внимательно переписывать скрипт... 

А что делать предлагается? Если название поля изменилось - его нужно поменять и в форме.
А так можно  сделать запрос SHOW CREATE TABLE XXX и регулярками распарсить имена полей и их тип.



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
$дмитрий
Дата 21.11.2011, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



1. Порядок полей в таблице необязательно перечислять
2. Нужно в цикле прогнать массив $row и получить готовый запрос, примерно так
Код

$sSQL = "INSERT INTO table VALUES (NULL";
$i = 0;
foreach($row as $sKey => $sValue)
{
    if(!$i){
        $i++;
        continue;
    }
    $sSQL .= ", '".mysql_real_escape_string($sValue)."'";
    $i++;
}
$sSQL .= ")";


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


 




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


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

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