我正在实现一个基本的侦听器(acivicrm_posthook),它在更新/添加DB行之后触发。
我遇到的问题是,即使表中的一行已经更改,通过Joomla数据库对象加载同一行也会返回上一个值。
假设我正在将对象的名称从“foo”更改为“bar”。

$db =& JFactory::getDBO();
$db->setQuery("SELECT ...");

返回“foo”作为名称,而
$c = mysql_connect("host","user","password");
mysql_select_db("db", $c);
$result = mysql_query("SELECT ...");

返回“bar”。
有没有正在进行的缓存,我有没有办法清除它?
供参考:
约姆拉2.5.6
菲律宾比索5.3.10
MySQL 5.1.36版本
编辑:以下是我在CiviCRM论坛上开始的一个主题,它提供了更多的细节:http://forum.civicrm.org/index.php/topic,25200.0.html
编辑2:“最新进展”和一些澄清。
我正在使用钩子推出一个更新的iCal提要,它是CiviCRM的前端组件提供的提要。当钩子触发时,它不会被更新,即使数据库在那一点上被更新,并且两端都没有缓存。显然CiviCRM使用自己的数据库连接器,因此上述措辞不再严格有效。使用稍后触发的钩子(civicrm_postProcess)解决了这个问题,但这是一个“黑客”修复。

最佳答案

在我看来,有三种选择:
@瑟伦贝克詹森可能是对的!尝试运行:
select DATABASE() from dual并查看每个数据库正在调用哪个数据库。
另一个选项是关闭autocommit,在这种情况下,您需要提交:
$db->setQuery("COMMIT");
第三种选择是INSERT没有正确写入(在第一种情况下),并且它失败了。但我需要查看查询才能确定。

10-06 12:34