Как я могу заархивировать строку данных? Переместите строку данных из одной таблицы в другую, удалив первый экземпляр, используя sql и Stack Overflow

У меня проблемы с архивированием ряда данных. Пользователь вводит текст — имя_сервера — который хранится в базе данных под столбцом «имя_сервера». После нажатия кнопки SQL должен вставить эти данные в новую таблицу — archive_servers — и затем удалить их из исходной таблицы, однако он только удалит данные и не вставит их в новую таблицу.
Ниже мое соединение PHP с моей базой данных, проверки соединения, операторы SQL для вставки, выбора и удаления и HTML для формы для ввода.

<?php
$message = '';
$db = new mysqli('localhost', 'root', '', 'isad235');
if($db->connect_error)
{
$message = $db->connect_error;
}
else
{
$message = 'CONNECTION OK';

$sql = "INSERT `archive_servers` SELECT * FROM `servers` WHERE `ServerName` = '".$_POST['name']."';";
echo $sql;
$sql = "DELETE FROM `servers` WHERE `ServerName` = '".$_POST['name']."';";
echo $sql;
$result = $db->query($sql);

if ($db->error)
{
echo $message = $db->error;
}
}
?>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form method="post"/>
Server Name: <input type="text" name="name"/>
<input type="submit" name="submit" value="Archive"/>
</form>
</body>
</html>

Я проверил соединение, и все нормально, у меня есть echo’d $ _POST, и он возвращает слово ‘Array’.

Вероятно, я пропустил что-то очень глупое, например символ, которого там быть не должно, или какую-то небольшую синтаксическую ошибку. Я использую NetBeans, и он не выдает никаких ошибок при запуске проекта. Любая помощь будет очень высоко ценится.

0

Решение

$sql = "INSERT `archive_servers` SELECT * FROM `servers` WHERE `ServerName` = '".$_POST['name']."';";
echo $sql;
$sql_delete = "DELETE FROM `servers` WHERE `ServerName` = '".$_POST['name']."';";
echo $sql_delete;
$result = $db->query($sql_delete);

if ($db->error)
{
echo $message = $db->error;
}

С этой частью кода вы выполняете запрос только один раз.

Вы должны выполнить SQL два раза (для вставки и удаления).

Это сработает за вас:

$sql_insert = "INSERT `archive_servers` SELECT * FROM `servers` WHERE `ServerName` = '".$_POST['name']."';";
echo $sql_insert;
$insert_result = $db->query($sql_insert);
if ($db->error)
{
echo $message = $db->error;
}
$sql_delete = "DELETE FROM `servers` WHERE `ServerName` = '".$_POST['name']."';";
echo $sql_delete;
$delete_result = $db->query($sql);
if ($db->error)
{
echo $message = $db->error;
}

if ($insert_result && $delete_result) {
echo 'Everything ok';
}
else {
echo 'Error occured!';
}
2

Другие решения

Вы не выполняете часть INSERT. Я бы также порекомендовал проверить успешность вставки перед удалением строки с помощью запроса (медленнее, но безопаснее) или простой проверки успешности.

$sql = "INSERT `archive_servers` SELECT * FROM `servers` WHERE `ServerName` = '".$_POST['name']."';";
echo $sql;
$result = $db->query($sql);
$sql = "DELETE FROM `servers` WHERE `ServerName` = '".$_POST['name']."';";
echo $sql;
$result = $db->query($sql);
0

Ваша первая ошибка — $ sql = «INSERT INTOarchive_servers ВЫБРАТЬ ИЗ servers ГДЕ ServerName = ‘». $ _ POST [‘ name ‘].»‘; «;

0
По вопросам рекламы [email protected]