Ошибки $_POST PHP UPDATE и отсутствие параметров отправки

Я пытаюсь выполнить $_POST ОБНОВЛЕНИЕ для следующей таблицы mysql:
Примечание: есть 3 раскрывающихся списка: статус, категория и доступ

app_generalData
---------------
app_id
table
status_id
category_id
tags
access_id

Результирующие тесты с print_r($_POST) и echo(s) гарантируют, что форма $_POST работает:

Array ( 
        [MAX_FILE_SIZE] => 100000
        [app_id] => 1 
        [title] => Nothing Special 
        [status] => 
        [category] => 
        [tags] => new tag 
        [access] => 
        [update] => Update ) 


Данные из формы.

  • Идентификатор: 1
  • Заголовок: Ничего особенного
  • Статус:
  • Категория:
  • Теги: новый тег
  • Доступ:

Полученное сообщение об ошибке:

Error querying database for General Data.

Желаемый результат(ы):

  1. Обновление элементов $_POST в БД

Фрагмент для ОБНОВЛЕНИЯ:

// Post the UPDATE to app_generalData
if (isset($_POST['update'])) {
  // print_r($_POST);
  // echo '<br />';

// Connect to the database
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

// Grab the data from the POST

  // General Data
  $app_id = mysqli_real_escape_string($dbc, trim($_POST['app_id']));
  $title = mysqli_real_escape_string($dbc, trim($_POST['title']));
  $status = mysqli_real_escape_string($dbc, trim($_POST['status']));
  $category = mysqli_real_escape_string($dbc, trim($_POST['category']));
  $tags = mysqli_real_escape_string($dbc, trim($_POST['tags']));
  $access = mysqli_real_escape_string($dbc, trim($_POST['access']));

// Confirm success with the user

    echo '<h1>Data from the form.</h1><br />';
    echo 'ID: ' . $app_id .'<br />';
    echo 'Title: ' . $title .'<br />';
    echo 'Status: ' . $status .'<br />';
    echo 'Category: ' . $category .'<br />';
    echo 'Tags: ' . $tags .'<br />';
    echo 'Access: ' . $access .'<br />';

    echo '<br />';

// Write the data to the database
  $query = "UPDATE      app_generalData
            SET         title = $title,
                        status_id = $status,
                        category_id = $category,
                        tags = $tags,
                        access_id = $access
            WHERE       app_id = $app_id
            ";

  mysqli_query($dbc,$query)
        or die('Error querying database for General Data.');

// close MySQL
  mysqli_close($dbc);

  exit();
}
else {
  echo 'Please enter all details below.';
}

person cpardon    schedule 17.10.2014    source источник
comment
Вы повторили mysqli_error? Что говорит фактическая ошибка?   -  person Rasclatt    schedule 18.10.2014
comment
@Rasclatt Спасибо за ваше предложение. Я проголосовал за вас, потому что ваше предложение заставило меня мыслить нестандартно. Когда я запустил print_r для $query, я увидел, что элементы SET не были заключены в кавычки вокруг $var(s). Я опубликую исправленное редактирование для будущих посетителей.   -  person cpardon    schedule 18.10.2014


Ответы (2)


Всякий раз, когда вы получаете mysql_errors, я бы посоветовал первое, что вы должны сделать, если проблема не обнаружена, просто взглянув на код, это повторить запрос.

Кажется, ваша проблема заключается в том, что вы не заключаете свою строку в '' (кавычки), например:

$query = "UPDATE      app_generalData
    SET         title = '$title',
                status_id = '$status',
                category_id = '$category',
                tags = '$tags',
                access_id = '$access'
    WHERE       app_id = '$app_id'
    ";
person Kypros    schedule 17.10.2014
comment
Спасибо за ваш ответ. Это произошло как раз тогда, когда я публиковал свое собственное исправление, поскольку я только что проверил и заметил то же самое. Теперь я проверил ваше редактирование, и, похоже, оно работает и с тем, как вы его написали. Я проголосовал за вас, но... не могли бы вы подсказать, почему мои варианты ‹select› не проходят в $_POST? Есть ли что-то еще, что нужно добавить к тегам ‹select›‹option›, чтобы включить их $_POST? - person cpardon; 18.10.2014
comment
Трудно сказать, что не так, без html-кода вашего ‹select›, но вам лучше закрыть этот вопрос, выбрав правильный ответ и повторно открыв другой с вашим точным кодом, поскольку это другая проблема, чем эта. - person Kypros; 18.10.2014

После запуска print_r($query) я смог заметить, что запрос отправлял следующее:

UPDATE app_generalData
SET title = Nothing Special,
    status_id = ,
    category_id = ,
    tags = new tag,
    access_id = 
WHERE app_id = 1

Причина ошибки: вокруг значений нет меток ("или")?

Рабочее решение:

Я обновил запрос до следующего

UPDATE app_generalData
SET title = '".$title."',
    status_id = '".$status."',
    category_id = '".$category."',
    tags = '".$tags."',
    access_id = '".$access."'
WHERE app_id = $app_id
            ";
person cpardon    schedule 17.10.2014