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
意味着您将处理字符串文字的责任交给了该模块。它做对了。
我正在 运行 宁 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
意味着您将处理字符串文字的责任交给了该模块。它做对了。