Копирование строки таблицы

Копирование строки таблицы

Можно ли скопировать всю строку таблицы, не указывая поименно все стоблцы?

Данные об изделии хранятся в строке таблицы БД и выводятся на страницу.
При введении данных о другом подобном изделии надо скопировать данные имеющегося в БД изделия с целью их редактирования.

Для этого в запросе приходится указывать все столбцы. А иногда столбцы добавляются или удаляются. То есть приходится каждый раз при изменении структуры таблицы вносить изменения в запрос.

Нет ли какой функции, чтобы не указывать все столбцы, а "тупо" копировать всю строку?
 

neko

tеam neko
ах вот ты о чем.

а это смысла не имеет
у тебя в форме поля из них 1 черт надо запрос собрать
можно просто insert into table_name values( ..., ... , ... )

можно несколько инсертов в один запрос совать начиная с какой-то версии mysql
 
Я думаю, надо после извлечения всей строки - * найти заголовки всех столбцов и как бы динамически сформировать INSERT. Или есть более простой способ?

-~{}~ 25.06.04 08:55:

into table_name values( ..., ... , ... )
Как раз то что в скобках можно сделать подстановкой. Так?

-~{}~ 25.06.04 08:57:

Наверное, лучше не имена столбцов, а их количество.
А затем
into table_name values( ..., ... , ... )
 

neko

tеam neko
вариантов масса
если ты вытаскиваешь ассоциативный массив mysql_fetch_array либо mysql_fetch_assoc
можно просто пройтись по ключам и сделать инсерт вида
insert into table_name set col1='foo', col2='bar' ...

можно написать короче
insert into table_name values( 'foo', 'bar', ... );

можно сразу несколько инсертов упаковать в один
это было не всегда с какой именно версии работает не помню
insert into table_name values( 'foo', 'bar', ...), ( 'ene', 'bene', ... );

что ты подразумеваешь под более простым способом
 
что ты подразумеваешь под более простым способом
Может, какая функция в mysql есть для копирования всей строки. :) Вижу, что нет.

А как определить, сколько столбцов извлечено?
Без этого ведь INSERT не составишь. Если по ключам ['1'], ['2'].

-~{}~ 25.06.04 09:10:

Поскольку заранее не известно количество столбцов...
 

ForJest

- свежая кровь
PHP:
$row = $mysql_fetch_row($result);
$query = "INSERT INTO table1 VALUES ('".implode("', '", $row)."'";
echo $query;
-~{}~ 25.06.04 11:22:

Хотя этот способ не делает квотирования [m]mysql_escape_string[/m]. Так что таки да, нужно пользовать [m]count[/m]($row). Либо [m]mysql_num_fields[/m]()
 

Фанат

oncle terrible
Команда форума
тогда я действительно ничего не понял.
нафига копировать запросом, когда все делается средствами СТАНДАРТНОГО интерфейса и НИЧЕГО менять не надо
 
Фанат
а в чем проблема-то?
insert into blabla select * from foobar where id='$id';
Это бы подошло. Но таблица, действительно, одна.
Будет работать? Сейчас не могу проверить. Если нет, то,
может, с помощью промежуточной таблицы??

Проблема была только в том, что изначально неизвестно количество столбцов в строке, которую надо скопировать.
 

Фанат

oncle terrible
Команда форума
проблема только в том, что ты занимаешься глупостями.
если тебе надо вывести строку на редактирование, то так и надо делать.
то есть СНАЧАЛА вывести поля, потом их отрелдактировать, и уж ПОТОМ заносить в базу.
 

Фанат

oncle terrible
Команда форума
ForJest он воспользовался твоим советом и сделал криво.
впрочем, заставлять аматоров переделывать всю их глючную кривую систему целиком, когда у них уже есть дырявая заплатка - занятие бесперсективное
 
Фанат
Нет. Сделал обычно. Редактирую и вставляю:)

-~{}~ 25.06.04 13:08:

http://phpclub.ru/talk/announcement...=&forumid=7
ты забыл кое-что важное
Не совсем так. Думал, может есть что-нибудь специальное.
 
Сверху