sqlite数据库是否在服务器和客户端的设备上进行了创建?

时间:2015-12-13 16:39:29

标签: php sqlite local-storage mobile-website emplace

我最近将我的网站文件更新到我的服务器。但我的sqlite数据库已在服务器上创建,但我希望它在访问者的设备上。我认为sqlite用于网站的离线目的,我有点困惑PLZ帮帮我

我的剧本:

class MyDB extends SQLite3 { 
    function __construct() {
        $this->open('mysqlitedb.db');
    }
}

$db = new MyDB();

它是在我的服务器上而不是在设备上创建的

2 个答案:

答案 0 :(得分:0)

您可以在客户端设备或服务器端甚至在两个位置拥有数据库。这真的取决于你的要求。如果您的每个设备都希望在设备上保留自己的数据,则足以在客户端设备中拥有数据库。如果您希望拥有任何集中位置来保存所有数据,则可以使用位于服务器上的数据库。

Sq-lite是一个轻量级DBMS,主要用作客户端DBMS,不建议用作服务器端实现。

此外,Firefox不支持SQLite数据库(在网页中)。而且它不再是HTML5规范的一部分。 IndexedDB是标准化数据库:http://www.w3.org/TR/IndexedDB/ Mozilla,Chrome和其他人正在研究它。

您使用的编码是PHP,它是一种服务器端语言,它将在服务器上执行并执行其所有任务,包括数据库创建。

我建议你使用IndexedDB而不是SQ-Lite并使用javascript来处理它。

var todoDB = (function() {
  var tDB = {};
  var datastore = null;

  // TODO: Add methods for interacting with the database here.

  // Export the tDB object.
  return tDB;
}());

/**
 * Open a connection to the datastore.
 */
tDB.open = function(callback) {
  // Database version.
  var version = 1;

  // Open a connection to the datastore.
  var request = indexedDB.open('todos', version);

  // Handle datastore upgrades.
  request.onupgradeneeded = function(e) {
    var db = e.target.result;

    e.target.transaction.onerror = tDB.onerror;

    // Delete the old datastore.
    if (db.objectStoreNames.contains('todo')) {
      db.deleteObjectStore('todo');
    }

    // Create a new datastore.
    var store = db.createObjectStore('todo', {
      keyPath: 'timestamp'
    });
  };

  // Handle successful datastore access.
  request.onsuccess = function(e) {
    // Get a reference to the DB.
    datastore = e.target.result;

    // Execute the callback.
    callback();
  };

  // Handle errors when opening the datastore.
  request.onerror = tDB.onerror;
};

答案 1 :(得分:0)

SQlite不是真正的RDBMS,而是单个文件。因此,您无法像MySQL和PostgreSQL数据库那样远程连接。此外,SQlite在某种意义上不是数据库,它支持事务和数据类型。如果您需要数据库服务器连接并将数据保存在一个地方,那么您应该替换SQlite。