Merge pull request #12006 from civicrm/5.1
[civicrm-core.git] / CRM / Core / BAO / Cache.php
index 1f295535a6f223f947e1059ce2cd3d7446b451c0..0e619143e33a830c4623ac49657158bff82a32c7 100644 (file)
@@ -1,9 +1,9 @@
 <?php
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.7                                                |
+ | CiviCRM version 5                                                  |
  +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2017                                |
+ | Copyright CiviCRM LLC (c) 2004-2018                                |
  +--------------------------------------------------------------------+
  | This file is a part of CiviCRM.                                    |
  |                                                                    |
@@ -146,18 +146,17 @@ class CRM_Core_BAO_Cache extends CRM_Core_DAO_Cache {
 
     $table = self::getTableName();
     $where = self::whereCache($group, $path, $componentID);
-    $id = CRM_Core_DAO::singleValueQuery("SELECT id FROM $table WHERE $where");
+    $dataExists = CRM_Core_DAO::singleValueQuery("SELECT COUNT(*) FROM $table WHERE {$where}");
     $now = date('Y-m-d H:i:s'); // FIXME - Use SQL NOW() or CRM_Utils_Time?
     $dataSerialized = serialize($data);
 
     // This table has a wonky index, so we cannot use REPLACE or
     // "INSERT ... ON DUPE". Instead, use SELECT+(INSERT|UPDATE).
-    if ($id) {
-      $sql = "UPDATE $table SET data = %1, created_date = %2 WHERE id = %3";
+    if ($dataExists) {
+      $sql = "UPDATE $table SET data = %1, created_date = %2 WHERE {$where}";
       $args = array(
         1 => array($dataSerialized, 'String'),
         2 => array($now, 'String'),
-        3 => array($id, 'Int'),
       );
       $dao = CRM_Core_DAO::executeQuery($sql, $args, TRUE, NULL, FALSE, FALSE);
     }