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

0

У меня возникли проблемы с архивированием ряда данных. Пользователь вводит текст - имя_сервера - который хранится в базе данных под столбцом "Имя сервера". После нажатия кнопки 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, и он не дает мне никаких ошибок при запуске проекта. Любая помощь будет очень высоко ценится.

Теги:
netbeans
mysqli
html-form

3 ответа

2
$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!';
}
0

Вы не выполняете часть 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 INTO archive_servers SELECT * FROM servers WHERE ServerName= '". $ _ POST [' name ']. "';";

Ещё вопросы

Сообщество Overcoder
Наверх
Меню