2013-03-19 86 views
0

如何修改opencart類以便它返回affected row countOpencart mysql db返回受影響的行數

<?php 
final class MySQL { 
    private $link; 

    public function __construct($hostname, $username, $password, $database) { 
     if (!$this->link = mysql_connect($hostname, $username, $password)) { 
      trigger_error('Error: Could not make a database link using ' . $username . '@' . $hostname); 
     } 

     if (!mysql_select_db($database, $this->link)) { 
      trigger_error('Error: Could not connect to database ' . $database); 
     } 

     mysql_query("SET NAMES 'utf8'", $this->link); 
     mysql_query("SET CHARACTER SET utf8", $this->link); 
     mysql_query("SET CHARACTER_SET_CONNECTION=utf8", $this->link); 
     mysql_query("SET SQL_MODE = ''", $this->link); 
    } 

    public function query($sql) { 
     if ($this->link) { 
      $resource = mysql_query($sql, $this->link); 

      if ($resource) { 
       if (is_resource($resource)) { 
        $i = 0; 

        $data = array(); 

        while ($result = mysql_fetch_assoc($resource)) { 
         $data[$i] = $result; 

         $i++; 
        } 

        mysql_free_result($resource); 

        $query = new stdClass(); 
        $query->row = isset($data[0]) ? $data[0] : array(); 
        $query->rows = $data; 
        $query->num_rows = $i; 

        unset($data); 

        return $query; 
       } else { 
        return true; 
       } 
      } else { 
       trigger_error('Error: ' . mysql_error($this->link) . '<br />Error No: ' . mysql_errno($this->link) . '<br />' . $sql); 
       exit(); 
      } 
     } 
    } 

    public function escape($value) { 
     if ($this->link) { 
      return mysql_real_escape_string($value, $this->link); 
     } 
    } 

    public function countAffected() { 
     if ($this->link) { 
      return mysql_affected_rows($this->link); 
     } 
    } 

    public function getLastId() { 
     if ($this->link) { 
      return mysql_insert_id($this->link); 
     } 
    } 

    public function __destruct() { 
     if ($this->link) { 
      mysql_close($this->link); 
     } 
    } 
} 
?> 

用法示例:

$this->db->query("UPDATE " . DB_PREFIX . "category SET image = '" . $this->db->escape(html_entity_decode($data['image'], ENT_QUOTES, 'UTF-8')) . "' WHERE category_id = '" . (int)$category_id . "'"); 

$this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = '" . (int)$category_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "'"); 

$this->db->query("SELECT * FROM `" . DB_PREFIX . "category_path` WHERE category_id = '" . (int)$data['parent_id'] . "' ORDER BY `level` ASC"); 
+0

這將是容易得多,如果他們爲插入/更新硬盤正確的方法/刪除我猜 – 2013-03-19 22:42:26

回答

4

它已經實現。看看上面的類代碼。它具有countAffected方法,使您在使用該查詢後

$this->db->countAffected() 

返回受影響的行數

+0

我搜索整個管理員和目錄文件夾中的「受影響」一詞,並可以找到任何東西。我應該搜索整個項目,必須閉上眼睛才能錯過,儘管 – 2013-03-19 23:08:45

+0

'$ this-> db'是'/ system/library/db.php'中的'DB'類,它依次調用上面引用的mysql類並且公平起來,它並不是很清楚 – 2013-03-20 01:03:12