2013-05-24 62 views
12

Tôi có một cơ sở dữ liệu SQLite và đang cố kết nối với nó bằng PHP. Đây là những gì tôi đang sử dụng:Làm cách nào để kết nối với cơ sở dữ liệu SQLite bằng PHP?

<?php 
    $dbconn = sqlite_open('combadd.sqlite'); 

    if ($dbconn) { 
     $result = sqlite_query($dbconn, "SELECT * FROM combo_calcs WHERE options='easy'"); 
     var_dump(sqlite_fetch_array($result, SQLITE_ASSOC)); 
    } else { 
     print "Connection to database failed!\n"; 
    } 
?> 

Tuy nhiên, tôi nhận được lỗi này:

Warning: sqlite_open() [function.sqlite-open]: file is encrypted or is not a database in C:\xampp\htdocs\deepthi\combadd\combadd_db.php on line 4
Connection to database failed!

Có chuyện gì vậy và làm thế nào tôi có thể sửa chữa nó?

+0

Hi @user, chào mừng đến VÌ THẾ. Tôi * mạnh mẽ * khuyên bạn nên sử dụng PDO - nó thực sự dễ dàng, linh hoạt và an toàn hơn bất cứ điều gì bạn (hoặc tôi) sẽ tự mình đưa ra (chính chúng ta). http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/ – Ben

Trả lời

24

Cố gắng sử dụng PDO thay vì sqlite_open:

$dir = 'sqlite:/[YOUR-PATH]/combadd.sqlite'; 
$dbh = new PDO($dir) or die("cannot open the database"); 
$query = "SELECT * FROM combo_calcs WHERE options='easy'"; 
foreach ($dbh->query($query) as $row) 
{ 
    echo $row[0]; 
} 
+0

nó thật tuyệt vời Antonio. tôi cần phải chèn dữ liệu từ excel tờ vào sqlite bằng cách sử dụng php. Bạn có thể giúp tôi không? thanks – user2412936

+0

Bạn sẽ tìm thấy một số ví dụ ở đây: http://www.if-not-true-then-false.com/2012/php-pdo-sqlite3-example/. Ngoài ra, bạn nên cân nhắc sử dụng một khung công tác để giúp thực hiện các tác vụ lặp đi lặp lại đó như kết nối với cơ sở dữ liệu, chèn, cập nhật, xóa các bản ghi. Hãy xem Laravel: http://four.laravel.com/ –

+0

Tôi có cần cài đặt cái đó để đọc dữ liệu xls từ mã php không? – user2412936

1
<?php 

    if ($db = sqlite_open('sampleDB', 0666, $sqliteerror)) { 
     $result = sqlite_query($db, 'select bar from foo'); 
     var_dump(sqlite_fetch_array($result)); 
    } else { 
     die($sqliteerror); 
    } 

?> 

Hãy chắc chắn hỗ trợ SQLite là cho phép, kiểm tra phpinfo()

Một giải pháp khác cho vấn đề của bạn là: Sử dụng mô-đun sqlite3 thay

class DB extends SQLite3 
{ 
     function __construct($file) 
     { 
      $this->open($file); 
     } 
} 

$db = new DB('sampleDB.sqlite'); 
8

Kết nối với cơ sở dữ liệu Làm theo mã PHP cho biết cách kết nối với cơ sở dữ liệu hiện có. Nếu cơ sở dữ liệu không tồn tại, thì nó sẽ được tạo và cuối cùng một đối tượng cơ sở dữ liệu sẽ được trả về.

<?php 
    class MyDB extends SQLite3 
    { 
     function __construct() 
     { 
     $this->open('combadd.sqlite'); 
     } 
    } 
    $db = new MyDB(); 
    if(!$db){ 
     echo $db->lastErrorMsg(); 
    } else { 
     echo "Opened database successfully\n"; 
    } 
?> 

Bây giờ hãy chạy chương trình trên để tạo cơ sở dữ liệu test.db trong thư mục hiện tại. Bạn có thể thay đổi đường dẫn của bạn theo yêu cầu của bạn. Nếu cơ sở dữ liệu được tạo thành công thì nó sẽ cung cấp sau thông điệp:

Open database successfully 

CHỌN Operation

Tiếp theo chương trình PHP cho thấy cách chúng ta có thể lấy và hồ sơ hiển thị

<?php 
    class MyDB extends SQLite3 
    { 
     function __construct() 
     { 
     $this->open('combadd.sqlite'); 
     } 
    } 
    $db = new MyDB(); 
    if(!$db){ 
     echo $db->lastErrorMsg(); 
    } else { 
     echo "Opened database successfully\n"; 
    } 

    $sql =<<<EOF 
     SELECT * FROM combo_calcs WHERE options='easy'; 
EOF; 

    $ret = $db->query($sql); 
    while($row = $ret->fetchArray(SQLITE3_ASSOC)){ 
     echo "ID = ". $row['ID'] . "\n"; 
    } 
    echo "Operation done successfully\n"; 
    $db->close(); 
?> 
Các vấn đề liên quan