2009-07-07 16 views
8

मुझे पता है कि PHP 5 पहले ही SQLite का समर्थन करता है लेकिन किसी कारण से मैं इसे काम नहीं कर सकता।मैं PHP और वैंप सर्वर का उपयोग कर SQLite डीबी का उपयोग और उपयोग कैसे कर सकता हूं?

मैंने SQLite tutorial: Getting started से निर्देशों का पालन किया। मैं भी सुनिश्चित करें कि निम्नलिखित php.ini से बाहर कोई टिप्पणी नहीं कर रहे हैं बनाया:

extension=php_pdo_sqlite.dll 
extension=php_sqlite.dll. 

लेकिन जब मैं Firefox का उपयोग कर स्थानीय होस्ट से PHP फ़ाइल खोलने के लिए, मैं इस त्रुटि मिलती है:

Fatal error: Class 'SQLiteDatabase' not found.

मैं विंडोज़ पर, अगर वह जानकारी मायने रखती है।

इस समस्या का कारण क्या हो सकता है?

उत्तर

8

मुझे लगता है कि कक्षा SQLiteDatabasesqlite के बजाय pdo_sqlite से है। तो तुम sqlite एक्सटेंशन सक्षम हैं या उसकी बजाय पीडीओ इस्तेमाल कर सकते हैं:

<?php 
$conn = new PDO('sqlite:c:/mydb.sq3'); 
$conn->exec('some sql query'); 
+0

बहुत बहुत धन्यवाद! मुझे लगता है कि मैं डीबी खोलने में सक्षम था क्योंकि अब त्रुटियों से संबंधित त्रुटियां हैं! अब मुझे सिंटैक्स सीखना है और सब कुछ! एक बार फिर धन्यवाद! – Jarvis

5

विंडोज पर आप अपने आरं में सेट एक निम्न होना चाहिए:

extension=php_pdo.dll 
extension=php_sqlite.dll 

मैं सुझाव है कि आप के मैनुअल में this page पढ़ें।

2

कक्षा SQLiteDatabasesqlite पुस्तकालय से एक वस्तु है, जो समर्थन पीएचपी 5.4 में गिरा दिया गया था है, लेकिन विभिन्न प्रणालियों और विन्यास पर, एक पहले के रिलीज में अक्षम किया जा सकता है के रूप में इस पुस्तकालय लंबे समय पदावनत किया जा रहा के रूप में चिह्नित किया गया था।

लाइब्रेरी php_sqlite.dll (Windows) या php_sqlite.so (लिनक्स) नहीं रह गया है पीएचपी के नए संस्करण में समर्थित है और php_sqlite3.dll या php_sqlite3.so क्रमशः से बदला गया।

आप कर सकते हैं:

  1. कोशिश php_sqlite.dll (php_sqlite.so) इंटरनेट में कहीं खोजने के लिए। this या this जैसे लिंक आपके लिए सहायक हो सकते हैं। हालांकि, अगर आप ध्यान से सुरक्षित धागा या NTSके लिए के लिए अपने PHP के मंच (x64 या x86) करने के लिए पुराने SQLite पुस्तकालय फ़ाइल इंजन (VC6, VC9 या VC11), संस्करण (5.x) और प्रकार (TS मिलान करने के लिए, निर्माण होगा गैर धागा सुरक्षित)। यह एक कठिन काम हो सकता है।

  2. छोड़ दो php_sqlite.dll (SQLiteDatabase) के पीछे और नए php_sqlite3.dll (SQLite3 वस्तु) की ओर जहाज। आपको अपनी डेटाबेस फ़ाइल को 2.1 से 3.0 तक बदलने के लिए SQLite Studio जैसे टूल का उपयोग करना होगा (आकार को आधे से भी कम किया जा सकता है) और फिर सावधानी से SQLite और SQLite3 PHP मैन्युअल पृष्ठों को आवश्यक ऑब्जेक्ट्स और फ़ंक्शंस कॉल बदलने के लिए सावधानी से तुलना करें।

तो विकल्प दो, ध्यान दें कि यह एक मुश्किल काम नहीं होना चाहिए, के रूप में परिवर्तन है कि बड़ा नहीं कर रहे हैं।उदाहरण के लिए, क्या मैं अब तक सीखा है:

  • SQLiteDatabase ->SQLite3,
  • SQLiteDatabase::unbufferedQuery ->SQLite3::query,
  • SQLiteResult::fetchAll(SQLITE_*) ->SQLite3Result::fetchArray(SQLITE3_*) आदि

प्राप्त करने में कठिनाई का सवाल है, में पुराना SQLite हमारे पास था:

$rowsIMEI = $db->unbufferedQuery($imeiSQL)->fetchAll(SQLITE_ASSOC); 

foreach($rowsIMEI as $r) 
{ 
    ... 
} 

, वहीं नई SQLite3 हम चाहिए में:

$rowsIMEI = $db->query($imeiSQL); 

while($r = $rowsIMEI->fetchArray(SQLITE3_ASSOC)) 
{ 
    ... 
} 

अन्य परिवर्तनों काम के समान राशि की आवश्यकता है, तो यह एक जीवन समय प्रक्रिया नहीं होनी चाहिए।

मैं, निश्चित रूप से, किसी को भी आगे बढ़ने की सलाह देता हूं और दूसरा विकल्प चुनता हूं। ज्यादातर मामलों में प्रगति दो उपलब्ध विकल्पों में से एक बेहतर है।

संबंधित मुद्दे

 संबंधित मुद्दे