Project:
Duplicate row data across multiple related tables.
Problem:
In php, I don't seemed to be able to get the id result from mysqli_insert_id after using the 1st mysqli_multi_query.
Status:
I've successfully queried the following using phpmyadmin (manually replacing unit_id with 1 and $unit_id1 with 61(the next corresponding)):
PHPMYADMIN
CREATE TEMPORARY TABLE tmp
SELECT `unit_id`,
`title`,
`status_id`,
`category_id`,
`tags`,
`access_id`
FROM unit_genData
WHERE `unit_id` = 1;# 1 row affected.
ALTER TABLE tmp
DROP COLUMN `unit_id`;# 1 row affected.
UPDATE tmp
SET `title` = 'DUPLICATE';# 1 row affected.
INSERT INTO unit_genData
SELECT 0,tmp.*
FROM tmp;# 1 row affected.
DROP TABLE tmp;# MySQL returned an empty result set (i.e. zero rows).
CREATE TEMPORARY TABLE tmp
SELECT `ad_id`,
`unit_id`,
`ad_title`,
`ad_image`,
`ad_img_caption`,
`ad_brief_desc`,
`ad_btn_text`
FROM unit_promoContent
WHERE `unit_id`=1;# 1 row affected.
ALTER TABLE tmp
DROP COLUMN `ad_id`;# 1 row affected.
UPDATE tmp
SET `unit_id` = 61;# 1 row affected.
INSERT INTO unit_promoContent
SELECT 0,tmp.*
FROM tmp;# 1 row affected.
DROP TABLE tmp;# MySQL returned an empty result set (i.e. zero rows).
PHP
Note: the first multi_query duplicates the first table successfully...the 2nd multi_query is dependent on the mysqli_insert_id result.
$sql1 = "CREATE TEMPORARY TABLE tmp
SELECT `unit_id`,
`title`,
`status_id`,
`category_id`,
`tags`,
`access_id`
FROM ".ID_TABLE."
WHERE `unit_id` = " . $id . ";
ALTER TABLE tmp
DROP COLUMN `unit_id`;
UPDATE tmp
SET `title` = 'DUPLICATE';
INSERT INTO ".ID_TABLE."
SELECT 0,tmp.*
FROM tmp;
DROP TABLE tmp;
";
$result = mysqli_multi_query($dbc,$sql1)
or die(mysqli_error($sql1));
$unit_id1 = mysqli_insert_id($dbc); // Store new unit_id as var // Tab 2 :: Promo Content
$sql2 = "CREATE TEMPORARY TABLE tmp
SELECT `ad_id`,
`unit_id`,
`ad_title`,
`ad_image`,
`ad_img_caption`,
`ad_brief_desc`,
`ad_btn_text`
FROM unit_promoContent
WHERE `unit_id`=" . $id . ";
ALTER TABLE tmp
DROP COLUMN `ad_id`;
UPDATE tmp
SET `unit_id` = ". $unit_id1 .";
INSERT INTO unit_promoContent
SELECT 0,tmp.*
FROM tmp;
DROP TABLE tmp;
";
$result = mysqli_multi_query($dbc,$sql2)
or die(mysqli_error($sql2));