0

最近、ウェブサイトのファイルをサーバーに更新しましたが、SQLite データベースはサーバー上に作成されましたが、訪問者のデバイス上に置きたいと思いました。sqlite はウェブサイトのオフラインの目的で使用されていると思いましたが、少し混乱しています plz を助けてください


私のスクリプト:

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

$db = new MyDB();

デバイスではなくサーバー上に作成されます

4

2 に答える 2

0

データベースは、クライアント デバイスまたはサーバー側のいずれか、または両方の場所に配置できます。それは本当にあなたの要件に依存します。各デバイスがデバイス上に独自のデータを保持したい場合は、クライアント デバイスに DB があれば十分です。すべてのデータを一元的に保持する場所が必要な場合は、サーバーに配置された DB を使用できます。

Sq-lite は軽量の DBMS であり、主にクライアント側の DBMS として使用され、サーバー側の実装として使用することはお勧めしません。


また、Firefox は SQLite データベース (Web ページ内) をサポートしていません。そして、それはもはや HTML5 仕様の一部ではありません。IndexedDB は標準化されたデータベースです: http://www.w3.org/TR/IndexedDB/ Mozilla、Chrome などはそれに取り組んでいます。


あなたが持っているコーディングはサーバーサイド言語であるPHPであり、DBの作成を含むサーバー上のすべてのタスクを実行および実行します。


SQ-Lite で IndexedDB を使用し、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;
};
于 2015-12-13T16:48:42.883 に答える