2010-08-31 67 views
1

我确信这可以完成。 我需要从SQLite数据库中提取数据&将其快速转换为XML,因此可以通过融合图来读取它以显示漂亮的图。通过PHP将SQLite转换为XML

我已经看到它与MySQL完成,但我发现很难找到关于SQlite到XML的信息。

<?php 

header("Content-type: text/xml"); 

$host = "localhost"; 
$user = "root"; 
$pass = ""; 
$database = "test"; 

$linkID = mysql_connect($host, $user, $pass) or die("Could not connect to host."); 
mysql_select_db($database, $linkID) or die("Could not find database."); 

$query = "SELECT * FROM blog ORDER BY date DESC"; 
$resultID = mysql_query($query, $linkID) or die("Data not found."); 

$xml_output = "<?xml version=\"1.0\"?>\n"; 
$xml_output .= "<entries>\n"; 

for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++){ 
    $row = mysql_fetch_assoc($resultID); 
    $xml_output .= "\t<entry>\n"; 
    $xml_output .= "\t\t<date>" . $row['date'] . "</date>\n"; 
     // Escaping illegal characters 
     $row['text'] = str_replace("&", "&", $row['text']); 
     $row['text'] = str_replace("<", "<", $row['text']); 
     $row['text'] = str_replace(">", "&gt;", $row['text']); 
     $row['text'] = str_replace("\"", "&quot;", $row['text']); 
    $xml_output .= "\t\t<text>" . $row['text'] . "</text>\n"; 
    $xml_output .= "\t</entry>\n"; 
} 

$xml_output .= "</entries>"; 

echo $xml_output; 

http://www.kirupa.com/web/mysql_xml_php.htm

感谢提前服用。

回答

1

这里是你发布的代码的一个版本,但使用SQLite替代的MySQL:

<?php 

header("Content-type: text/xml"); 

$dbhandle = sqlite_open('sqlitedb'); 
$query = sqlite_query($dbhandle, 'SELECT * FROM blog ORDER BY date DESC'); 
$result = sqlite_fetch_all($query, SQLITE_ASSOC); 

try { 
    $db = new PDO("sqlite:/path/to/database.db"); 
} catch(PDOException $e) { 
    die('Unable to connect to database: ' . $e->getMessage()); 
} 
$query = $db->prepare("SELECT * FROM blog ORDER BY date DESC"); 
$query->execute(); 
$result = $query->fetchAll(); 

$xml_output = "<?xml version=\"1.0\"?>\n"; 
$xml_output .= "<entries>\n"; 
foreach ($result as $row) { 
    $xml_output .= "\t<entry>\n"; 
    $xml_output .= "\t\t<date>" . $row['date'] . "</date>\n"; 
    // Escaping illegal characters 
    $row['text'] = str_replace("&", "&", $row['text']); 
    $row['text'] = str_replace("<", "<", $row['text']); 
    $row['text'] = str_replace(">", "&gt;", $row['text']); 
    $row['text'] = str_replace("\"", "&quot;", $row['text']); 
    $xml_output .= "\t\t<text>" . $row['text'] . "</text>\n"; 
    $xml_output .= "\t</entry>\n"; 
} 

$xml_output .= "</entries>"; 
$db = null; 

这里是PHP documentation for PDO以获取更多信息。

这是一个tutorial for using PDO

编辑:更改代码以使用PDO而不是sqlite_*函数。

+2

据我所知,5.3以下PHP的原生sqlite_ *函数只能打开SQLite版本2数据库,现在已经过时了。要打开今天的第3版数据库,你必须使用PDO。 PHP 5.3及以上版本没有这个限制。 – djn 2010-09-01 02:49:33

+1

你是对的。我在PHP中使用SQLite的经验是通过Zend使用PDO。我更新了我的代码来代替使用PDO。谢谢(你的)信息! – pferate 2010-09-01 17:04:09