Я был успешен с дублированием объединенных таблиц. Ура!
Теперь, после ряда тестов, я обнаружил, что один апостроф (экранированные элементы) не принимается. При первоначальном создании новых строк таблиц в форме все выполнялось следующим образом:
$unit_id = mysqli_real_escape_string($dbc, trim($_POST['ajax_unit_id']));
Теперь, когда я дублирую эти строки для создания новых записей, я, кажется, не знаю, где / как снова escape_string, чтобы снова разрешить одиночные апострофы, такие как заголовок с именем Don's Supah-Dupah App
,
$sql1 = "CREATE TEMPORARY TABLE tmp
SELECT *
FROM ".ID_TABLE."WHERE `unit_id` = " . $id . "";
$result = mysqli_query($dbc,$sql1) or die(mysqli_error($dbc));
$sql2 = "ALTER TABLE tmp
DROP COLUMN `unit_id`";
$result = mysqli_query($dbc,$sql2) or die(mysqli_error($dbc));$sql3 = "UPDATE tmp
SET `title` = '" . $titleStamp . "'";
# ************************************************************ #
# ****** This is where I believe the issue is occurring ****** #
# ************************************************************ #$result = mysqli_query($dbc,$sql3) or die(mysqli_error($dbc));
$sql4 = "INSERT INTO ".ID_TABLE."SELECT 0,tmp.*
FROM tmp";
$result = mysqli_query($dbc,$sql4) or die(mysqli_error($dbc));
$unit_id1 = $dbc->insert_id; //mysqli_insert_id($dbc); // Store new unit_id as var
$sql5 = "DROP TABLE tmp;";
$result = mysqli_query($dbc,$sql5) or die(mysqli_error($dbc));
После повторного прохождения кода я обнаружил, что ошибка на самом деле не имеет ничего общего с дублированием … вроде.
Замечания: Я даю этот ответ на тот случай, если он поможет кому-то отстраниться, посмотреть на собственную проблему с 5000 метров … вместо 5 дюймов. Надеюсь, это поможет кому-то вытащить себя из кроличьей норы, чтобы получить лучшую перспективу.
Ранее, до дублирования, я бы установил переменную $title
который был сгенерирован начальным выбором SQL
$row = mysqli_fetch_array($rdata);
$title = $row['title'];
…затем объединить title
и datetimestamp
,
date_default_timezone_set(DEFAULT_TZ); // Default timezone set as Australia/Melbourne
$timestamp = date('Y/m/d h:i:s:a');
$titleStamp = $title." COPY ".$timestamp;
это $title
переменная, где возникла проблема. Новая строка должна была быть экранирована, прежде чем содержимое могло быть вставлено обратно в новую строку.
$title = mysqli_real_escape_string($dbc, trim($row['title']));
Вуаля!
Других решений пока нет …