Jump to content


Photo

Question about copying data from one table to another.


  • Please log in to reply
10 replies to this topic

#1 chelsea7

chelsea7
  • New Members
  • Pip
  • Newbie
  • 6 posts

Posted 17 November 2003 - 07:06 PM

Hello everyone,

I have a question about copying data from one table to another. Well actually, I would like to move the data from one table into another.

ie. I have a php page when the user can view one image at a time. If the user wishes to keep the image, he/she clicks a button and the image is copied to another database and removed from the current then the next image is displayed and so forth.

I tried to do this from the mysql prompt. However, I recieve a duplicate entry \'1\' for key 1. Obviously, I have a unique primary index.

Is there a way I could work around this?

Thanks
Chelsea 8)
Do it where it counts!

#2 DylanBlitz

DylanBlitz
  • Members
  • PipPipPip
  • Advanced Member
  • 99 posts
  • LocationOC Baby!

Posted 17 November 2003 - 07:21 PM

so do you want to know how to move the data through command line or do you want to know how to do it through php? I\'m not sure what your looking for?

#3 chelsea7

chelsea7
  • New Members
  • Pip
  • Newbie
  • 6 posts

Posted 17 November 2003 - 08:52 PM

I would like to use php code to do this. Sorry that I wasn\'t clear.

Thanks
Chelsea
Do it where it counts!

#4 DylanBlitz

DylanBlitz
  • Members
  • PipPipPip
  • Advanced Member
  • 99 posts
  • LocationOC Baby!

Posted 17 November 2003 - 09:16 PM

The primary key is probably also auto increment isn\'t it? There are a couple things you could do. First, you could take off the auto increment on the second table, that should allow you to insert a new record and use a field from the other table. Or you could just insert a new record into the backup db and then pull up the new id that gets created and use that id from then on.

Let me know if those wont work or if your thinking of something else and I\'l throw out more suggestions :)

#5 chelsea7

chelsea7
  • New Members
  • Pip
  • Newbie
  • 6 posts

Posted 18 November 2003 - 12:52 AM

Yes, the primary key is also auto increment. But if I remove the auto increment, wouldn\'t that allow for duplicates in the table? In this situation, the ID\'s must be unique because they are updated by the user . So let\'s say record ID 5 is to be updated or deleted, there can only be one record ID 5 otherwise two records will be deleted. If I\'m understanding the solution correctly.

Is there a way perhaps that I can have php find the last record in the second table and add the next record to it?

ie the first table record is 2 the last record in the second table is 68. Can I simply insert the record into the second table to be the 69th record? This way I won\'t have to worry about that error previously stated.

Thanks
Chelsea
Do it where it counts!

#6 DylanBlitz

DylanBlitz
  • Members
  • PipPipPip
  • Advanced Member
  • 99 posts
  • LocationOC Baby!

Posted 18 November 2003 - 01:26 AM

yup, that\'s what I meant by

Or you could just insert a new record into the backup db and then pull up the new id that gets created and use that id from then on.  


If you just insert new data then it will grab the next available id. The problem you are running into is you are trying to insert the id, which it doesn\'t like since the field is auto increment. So just do an insert for everything but the id and then use

$newid = mysql_insert_id();

to get the new id of the item.

I just wasn\'t sure if you absolutely had to keep that same id or not :)

#7 chelsea7

chelsea7
  • New Members
  • Pip
  • Newbie
  • 6 posts

Posted 18 November 2003 - 04:12 AM

O.K., yes I did not include the ID field. The record copies into the second table and the auto increment gives the next available ID/record number.

But I then noticed something strange. Take a look at this code;

$sql = \"INSERT INTO oldtable (`imagefilepath`) select (`imagefilepath`) from newtable where ID=$count\";

The above works fine. However, if I add another column see below;

$sql = \"INSERT INTO oldtable (`imagefilepath`,`v5`) select (`imagefilepath`,`v5`) from newtable where ID=$count\";

Nothing happens. That is the records will not copy to the oldtable. If I just use one column or \'Select *from new table\', that\'s not a problem. Is there any reason why it won\'t take more than one column? It works with the regular \'Insert\' commands I have in php.

Thanks
Chelsea
Do it where it counts!

#8 DylanBlitz

DylanBlitz
  • Members
  • PipPipPip
  • Advanced Member
  • 99 posts
  • LocationOC Baby!

Posted 18 November 2003 - 04:25 AM

hmm, actually I\'m surprised that it worked at all heh. mysql doesn\'t support nested subqueries. At least the latest stable doesn\'t. This is how I would do it.

[php:1:924c435665]
$query = mysql_fetch_array(mysql_query(\"SELECT imagefilepath, v5 FROM new_table WHERE ID=$count\"));

$insert = mysql_query(\"INSERT INTO old_table (\'imagefilepath\', \'v5\') VALUES (\'$query[imagefilepath]\', \'$query[v5]\')\");

[/php:1:924c435665]

#9 Barand

Barand
  • Moderators
  • Sen . ( ile || sei )
  • 18,025 posts

Posted 19 November 2003 - 09:00 AM

DylanBlitz,

Its not a subquery. Checkout INSERT ... SELECT syntax in MySql manual

It is section 6.4.3.1 in mine. (version 3.23.47)

Chelsea7,
The only reason I can think of is an error in the second field name - are you sure its valid
If you are still using mysql_ functions, STOP! Use mysqli_ or PDO. The longer you leave it the more you will have to rewrite.

Donations gratefully received






moon.png

|baaGrid| easy data tables - and more
|baaChart| easy line, column and pie charts

#10 DylanBlitz

DylanBlitz
  • Members
  • PipPipPip
  • Advanced Member
  • 99 posts
  • LocationOC Baby!

Posted 19 November 2003 - 10:43 AM

thanks for the correction barand, learn something new every day :)

#11 chelsea7

chelsea7
  • New Members
  • Pip
  • Newbie
  • 6 posts

Posted 19 November 2003 - 04:35 PM

Yes, the second field is valid. I\'m going to try the example DylanBliz gave me. I\'ll let you all kno of the outcome.

I had this problem similar to this one. The \'Insert\' command would work in direct mode at the mysql prompt but would not work in the php code.
I really didn\'t do anything to correct it. But the following day it worked in the php code.

Thanks
Chelsea7
Do it where it counts!




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users