2017-08-30 23 views
-3

我想使用我在這裏找到的示例使用SQLite,但我無法讓它工作。我想包括要求數據庫密碼來解碼它。如何將密碼inphp代碼放入sqlite?

我收到錯誤消息:

Fatal error: Uncaught exception 'Exception'

隨着消息SQLite3::open() expects parameter 2 to be long ...等

<?php 
    class MyDB extends SQLite3 
    { 
     function __construct() 
     { 
     $this->open('mySQLiteDB.sqlite','','password'); 
     } 
    } 
    $db = new MyDB(); 

    if(!$db){ 
     echo $db->lastErrorMsg(); 
    } else { 
     echo "Opened database successfully\n"; 
    } 
$sql =<<<EOF 
     SELECT * FROM Stock WHERE Nom='CAF'; 
EOF; 

    $ret = $db->query($sql); 
    while($row = $ret->fetchArray(SQLITE3_ASSOC)){ 
     echo "Nom = ". $row['Nom'] . "\n"; 
    } 
    echo "Operation done successfully\n"; 
    $db->close();    
?> 

回答

3

錯誤消息是很清楚。方法open()的第二個參數(標誌)必須是整數。你目前正在傳遞一個空字符串。

變化:

$this->open('mySQLiteDB.sqlite','','password'); 

使用默認的標誌:

$this->open('mySQLiteDB.sqlite', SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE, 'password'); 

你可以閱讀更多的the documentation

+0

嗨thx爲你提供幫助。但不工作太...我現在得到這個消息:警告:SQLite3 ::查詢()[sqlite3.query]:無法準備語句:26,文件被加密或不是數據庫在/ home/... – Frenchy90

+0

@ Frenchy90 - 這是一個單獨的問題。確定它實際上是一個sqlite3數據庫,而不是早期版本? sqlite3驅動程序不向後兼容。然而,如果這個答案解決了你最初的問題(你得到的錯誤信息),那麼你應該接受它。 –

+0

虐待它嘗試它來測試與服務器的兼容性:<?php /* $ dbname ='base';如果(!class_exists('SQLite3')) die(「SQLite 3 NOT supported。」); $ base = new SQLite3($ dbname,0666); echo「。」; */ ?>我得到的消息:支持SQLite 3,通常這很好?沒有 – Frenchy90