2016-04-29 6 views
0

Я новичок в малине, и я пытаюсь прочитать простую базу данных с php-страницы, но что-то не так: я не могу прочитать содержимое базы данных: Здесь код страницы php:Путь к базе данных на малине

<!DOCTYPE html> 
<html> 
<body> 
<H1>Test Database</H1> 

<?php 

$sq = sqlite_open('miodatabase.db', 0666, $sqlite_error); 

if(!$sq) 
{ 
    die(“Errore Sqlite: “.$sqlite_error); 
} 

$result = sqlite_query($sq, 'select * from test'); 
while($data = sqlite_fetch_array($result)) 
{ 
    echo $data[‘nome’]; 
} 
sqlite_close($sq); 
?> 

</body> 
</html> 

База данных «miodatabase», которая содержит таблицу под названием «тест». Я поместил базу данных в папку \ var \ www \ html (правильно?), Но когда я открываю страницу, я вижу пустую страницу. Я уверен, что база данных содержит таблицу (проверенную с помощью команд sqlite3), а таблица содержит одну строку. Где мне нужно поставить базу данных? Почему я ничего не вижу? Спасибо

ответ

0

Я решил: я набираю снова команде

sudo apt-get install php5-sqlite 
sudo /etc/init.d/apache2 restart 

, а затем я могу увидеть в информации PHP разделы о sqlite3. я обновить мою страницу PHP, как это:

//Enable show error 
ini_set('display_errors', 'On'); 
error_reporting(E_ALL|E_STRICT); 


$db = new SQLite3("miodatabase.db"); 

$sql_select='SELECT * FROM test'; 
$result=$db->query($sql_select); 

echo "<table border='1'>"; 
echo "<tr>"; 
$numColumns=$result->numColumns(); 
for ($i = 0; $i < $numColumns; $i++) 
{ 
    $colname=$result->columnName($i); 
    echo "<th>$colname</th>"; 
} 
echo "</tr>"; 
while($row = $result->fetchArray(SQLITE3_NUM)) 
{ 
    echo "<tr>"; 
    for ($i = 0; $i < $numColumns; $i++) 
    { 
     $value=$row[$i]; 
     echo "<th>$value</th>"; 
    } 
    echo "</tr>"; 
} 
echo "</table>"; 

Чтобы открыть базу данных я использую в настоящее время

$db = new SQLite3("miodatabase.db"); 

потому что sqlite_open не поддерживается этой версией SQLite. Теперь все работает правильно

1

Если вы ничего не видите, я думаю, что это проблема конфигурации php.

Вы пытаетесь добавить:

<?php phpinfo(); ?> 

в начале вашего скрипта. Если у вас пустая страница, посмотрите конфигурацию apache/nginx.

Вы также можете попробовать запустить сценарий из командной строки. Может быть, полезно в некоторых случаях.

ОБНОВЛЯТЬ

Если вы используете SQLite3 следовать этому коду

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

$db = new MyDB(); 
$result = $db->query('select * from test', SQLITE3_OPEN_READWRITE); 

//var_dump($result->fetchArray()); 
while($data = $result->fetchArray()) 
{ 
    echo $data[‘nome’]; 
} 
$db->close(); 
+0

Если я помещаю только информацию о php, то я вижу информацию о php .... Я думаю, что это проблема, связанная с пути к базе данных ... где я могу поместить базу данных и как я могу указать путь в команде open? – Lorenzo

+0

Хорошо. И www-data (или ваш пользователь apache/nginx unix) является владельцем 'miodatabase.db'? – KerooZ

+1

Для простого теста поместите свою базу данных в один и тот же путь к вашему скрипту, и вам не нужно менять код. Если нет, вам нужно установить полный путь к базе данных в открытой функции. '$ sq = sqlite_open ('/ var/www/html/miodatabase.db', 0666, $ sqlite_error);' – KerooZ