【问题标题】:My UPDATE query in mysql perl is not updating. What am I doing wrong?我在 mysql perl 中的 UPDATE 查询没有更新。我究竟做错了什么?
【发布时间】:2020-08-11 03:30:55
【问题描述】:

我想从 mysql 中获取数据,显示它,让用户编辑这些数据,然后将其保存到数据库中。除了保存到数据库部分之外,我目前所有的工作都在工作。我一直相信 mysql 中的 UPDATE 查询是你让它工作的方式。我放置了一个 UPDATE 查询,但没有运气。这里有人遇到过这个问题吗?我在这里和 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');用户可以在此处编辑问题字段。

谢谢!

【问题讨论】:

  • 提示:prepare+execute+finish可以替换为do

标签: mysql perl dbi


【解决方案1】:

以下是四种可能的结果:

  1. 没有任何反应,因为代码没有被执行。

  2. 由于发生错误(并且使用了RaiseError => 1)而引发异常。除非被捕获,否则异常最终会打印到 STDERR。

  3. ->execute 返回字符串 0E0(这是真的,但数值为零),因为没有更新任何行,因为 WHERE 子句不匹配任何行。
  4. ->execute 返回一个正数,表示修改的行数。

确定哪种情况适用,你就会知道如何前进。

【讨论】:

  • 感谢您的建议。我最终发现了问题。我没有单独识别数据,所以它没有更新。
猜你喜欢
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 2016-07-18
  • 2015-05-08
  • 1970-01-01
  • 2019-12-23
  • 2014-06-15
  • 1970-01-01
相关资源
最近更新 更多