2012-03-01 1 views
0

Мне нужно уметь копировать все строки, у которых нет идентификатора пользователя в одной таблице, с идентификатором пользователя, равным 1. это код, который у меня есть: (он не работает, когда Я запускаю его), он отображает поле элементов и поле идентификатора виджета, используя эхо. но он не вставляет данные. любые предложениякопировать данные mysql в ту же самую таблицу

$sql=("SELECT * from options WHERE userid='' "); 
    $resultat= mysql_query($sql); 

    while($row = mysql_fetch_array($resultat)) 
    { 
    $userid="1"; 
    echo $items.$widgetid."<br>"; 
     $widgetid = $row['widgetid']; 
     $items = $row['items']; 
     $stats = $row['stats']; 
     $upd=("INSERT INTO options (userid, widgetid, items,stats) 
VALUES ('$userid', '$widgetid','$items', '$stats')"); 
mysql_query($upd); 
     } 
+0

Если вставка не удается, то, как правило, появляется сообщение об ошибке, связанном с ним. Не зная, что происходит на самом деле, я предполагаю, что 'userid' является ПЕРВИЧНЫМ КЛЮЧОМ и, следовательно, может не произойти дважды. – rodneyrehm

+0

ОСНОВНОЙ \t ОСНОВНОЙ \t \t ID widgetid \t UNIQUE \t \t widgetid. id является первичным, а не идентификатором пользователя. он не возвращает ошибку, если бы я это исправил – cppit

ответ

1

Я думаю, вам нужно только обновить строки, где идентификатор = «»

update options 
set userid=1 
where userid=''; 


$upd=("INSERT INTO options (userid, widgetid, items,stats) 
select 1, widgetid, stats from options 
where userid='' "); 
+0

нет Мне нужны копии этих файлов. Я не пытаюсь обновлять поля, в которых мне нужны несколько экземпляров, поэтому копирует. Я очень хорошо знаком с UPDATE, и это не то, что я ищу. – cppit

+0

Затем попробуйте этот запрос 'insert into options (fields, userid) select fields, 1 из параметров, где userid = '';' –

+0

@fogsy выполнил мой запрос для вас. –

1
create table newTable like oldTable; 

insert into newTable 
select * from oldTable 
where userid = ''; 

Но, возможно, вы на самом деле просто нужно обновить, как сказал Навин?

+0

эй, чтобы он был копией в таблице SAME с разными идентификаторами. а не новую таблицу, поэтому не создавайте таблицу. Я решил, что это должно пройти через петлю. – cppit

4
INSERT INTO options 
SELECT '1' AS userid, widgetid, items, stats 
FROM options 
WHERE userid = '' 

Предполагая, что это порядок номеров, указанных в таблице.

0

Использование ниже фрагментов в PHP

$upd= (
     "INSERT INTO 
     options (userid, widgetid, items,stats) 
     VALUES (1, '". $widgetid ."' , '". $items ."' , '". $stats ."') 
     " 
    ); 
Смежные вопросы