MySQL更新返回失败

MySQL Update Returning Failed

我正在 运行 宁 MySQL 更新查询,但它总是失败。我正在使用 WordPress,我也尝试 运行 来自 phpMyAdmin 的相同查询,但也失败了。

这是我的 table:

id period x y
1 Sep 2021 - Nov 2021

我试过运行正在获取计数:

SELECT COUNT(*) FROM `utility_period` WHERE 'period' = 'Sep 2021 - Nov 2021'

这returns 0 而记录存在于table。

更新查询:

UPDATE `utility_period` SET total = '0’ WHERE `period` = ‘Sep 2021 – Nov 2021’

为什么会这样?

谢谢大家。它现在正在工作。 我无法确定问题所在,但现在再次使用 wpdb 并解决了问题。

         $replace = [
             "total" => $new_total
           ];
  
        $where = ["period" => $period];
  
        $update = $wpdb->update("utility_period", $replace, $where);

tl;dr:' 不是 。它们很难区分,但作为程序员,您必须区分。

在 MySQL 中,字符串文字包含在 single-quotes ' .

在这个查询中,您遇到了一个“有用的”文字处理程序,该程序用 替换了那些单引号。它们很难区分,但 在 SQL(或大多数编程语言)中作为 string-enclosing 标记没有用。

并且,数据库、表和列的名称可以选择用反引号括起来,就像您的查询一样。仅当对象名称也是 SQL.

中的关键字时才需要反引号

所以这个

 UPDATE `utility_period` SET total = '0’ WHERE `period` = ‘Sep 2021 – Nov 2021’

应该是这个

 UPDATE `utility_period` SET `total` = '0' WHERE `period` = 'Sep 2021 – Nov 2021'

或这个

 UPDATE utility_period SET total = '0' WHERE period = 'Sep 2021 – Nov 2021'

SQL 短语 WHERE 'period' = 'Sep 2021 - Nov 2021' 确定文本字符串常量 'period' 是否等于常量 'Sep 2021 - Nov 2021'。它不是。您在该列名称周围使用了 ' 而不是反引号。

您使用 $wpdb 意味着您将处理字符串文字的责任交给了该模块。它做对了。