簡體   English   中英

Joomla數據庫查詢更新后返回舊值

[英]Joomla database query returns old value after update

我正在實現更新/添加數據庫行后觸發的基本偵聽器( civicrm_post鈎子)。 我遇到的問題是,即使表中的一行已更改,通過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”。

有沒有正在進行的緩存,有什么方法可以清除它?

以供參考:

  • Joomla 2.5.6
  • PHP 5.3.10
  • MySQL 5.1.36

編輯:這是我在CiviCRM論壇上開始的主題,提供了更多細節: http : //forum.civicrm.org/index.php/topic,25200.0.html

編輯2:“最新動態”和一些說明。

我正在使用掛鈎推出一個更新的iCal提要,它是CiviCRM前端組件提供的一個提要。 掛鈎觸發時,它不會更新,即使此時數據庫已更新且兩端均沒有緩存。 顯然,CiviCRM使用其自己的數據庫連接器,因此上述措辭已不再嚴格有效。 使用稍后觸發的鈎子(civicrm_postProcess)解決了此問題,但這是一個“ hacky”修復程序。

從我的角度來看,有三種選擇:

  1. @SørenBeckJensen可能是正確的! 嘗試運行:
    select DATABASE() from dual
    並查看每個數據庫正在調用哪個數據庫。

  2. 另一個選擇是關閉autocommit ,在這種情況下,您需要提交:
    $db->setQuery("COMMIT");

  3. 第三個選項是INSERT書寫不正確(在第一種情況下)並且失敗。 但是我需要查看查詢才能確定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM