我正在为 ActiveCollab 开发一个模块。直到今天,当我尝试在其中一张表上运行更新命令时,一切正常。这是命令:
UPDATE `acx_credit_card_vault_recurring` SET `status`='1' WHERE `id`='2'
令我不快的是,它没有用。我通过将其复制粘贴到 phpmyadmin SQL 文本框中尝试了相同的命令并运行它没有任何问题。
我完全删除了表并通过脚本创建了它,以确保没有与权限相关的问题(?):
$result = DB::execute("CREATE TABLE IF NOT EXISTS `acx_credit_card_vault_recurring` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`invoice_object_id` int(11) NOT NULL,
`ccv_id` int(11) NOT NULL,
`status` int(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=0");
pr($result);
//Then i inserted a few records, again through module script and tried the update once again.
$result2 = DB::execute("INSERT INTO `acx_credit_card_vault_recurring` (`invoice_object_id`, `ccv_id`, `status`) VALUES
(1, 1, 0),
(4, 2, 0)");
pr($result2);
$result3 = DB::execute("UPDATE `acx_credit_card_vault_recurring` SET `status`='1' WHERE `id`='2'");
pr($result3);
上述所有 pr(print_r) 函数都打印了 1(true) 并且表已成功创建、填充和更新,一次完成。现在,我注释掉了 CREATE 和 INSERT 代码块并单独运行了 UPDATE 语句,令我不快的是,它再次无法正常工作!
除此之外,如果我确实一起运行第一个和最后一个语句(CREATE 和 UPDATE),则 UPDATE 工作正常。但是如果单独运行它不起作用。此外,每次我运行它时,它都会返回 true(1),这意味着查询运行“没有错误”,但没有更新记录。
这个问题似乎只发生在这个表上,并且 SQL 更新语句在同一数据库的其他表上工作正常。
我可以看到很多用户在这里提出了许多相同的问题,但我找不到满意的答案。大多数答案建议检查语法、单引号、胡萝卜等,在我的情况下,我认为这不是问题。