Мой запрос ОБНОВЛЕНИЕ в mysql perl не обновляется. Что я делаю неправильно? - PullRequest
1 голос
/ 27 апреля 2020

Я хочу взять данные из mysql, отобразить их, попросить пользователей отредактировать эти данные и затем сохранить их в базе данных. У меня все в настоящее время работает, кроме сохранения в части базы данных. Я был уверен, что запрос UPDATE в mysql - это то, как вы заставите это работать. Я поставил запрос ОБНОВЛЕНИЕ на месте и не повезло. Кто-нибудь здесь сталкивался с этой проблемой раньше? Я прочитал несколько сообщений здесь и на perl монахах об этой проблеме и, похоже, не могу найти ответ, который решает мою проблему. Я положу некоторые из моего кода ниже. Спасибо!

    my $dbh=DBI->connect("dbi:mysql:survey_one", "user", "password", { PrintError =>0, RaiseError => 1, AutoCommit => 1}) or die $DBI::errstr;


    my $edit_sql = q{UPDATE new_survey SET question = ? WHERE title= ?};

    my $sthe = $dbh->prepare($edit_sql);
    $sthe->execute($questionedit, $marathon);
    $sthe->finish();

Я хотел бы отметить, что если бы я задавал в столбце вопросов строку типа «работает ли это?» Я бы имел успех. Это когда я пытаюсь использовать пользовательский ввод $ questionedit, который определяется как $ questionedit = param ('editquestion'); Здесь пользователи могут редактировать поле вопроса.

Спасибо!

1 Ответ

1 голос
/ 27 апреля 2020

Ниже приведены четыре возможных результата:

  1. Ничего не происходит, потому что код не выполняется.

  2. Исключение выдается, потому что произошла ошибка (и RaiseError => 1 было использовано). Исключение в конечном итоге будет напечатано в STDERR, если оно не будет перехвачено.

  3. ->execute возвращает строку 0E0 (которая имеет значение true, но нумеруется до нуля), поскольку строки не были обновлены, поскольку WHERE предложение не соответствует ни одной строке.
  4. ->execute возвращает положительное число, указывающее количество измененных строк.

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

...