2011-08-22 127 views
2

我希望能夠用PHP解析SQL數據庫來輸出XML,但是我不能讓它顯示錶名和它的所有內容。我可以使用一些幫助,這裏是我的代碼沒有登錄信息: 我已經定義了db服務器,mdb用戶和pass以及db名稱;應該定義什麼?PHP XML解析問題

<?php 
// connection to the database 
$dbhandle = mysql_connect(DB_SERVER, DB_USER, DB_PASS) 
    or die("Unable to connect to MySQL"); 

// select a database to work with 
$selected = mysql_select_db(DB_NAME, $dbhandle) 
    or die("Could not select data"); 

// return all available tables 
$result_tbl = mysql_query("SHOW TABLES FROM "DB_NAME, $dbhandle); 

$tables = array(); 
while ($row = mysql_fetch_row($result_tbl)) { 
    $tables[] = $row[0]; 
} 

$output = "<?xml version=\"1.0\" ?>\n"; 
$output .= "<schema>"; 

// iterate over each table and return the fields for each table 
foreach ($tables as $table) { 
    $output .= "<table name=\"$table\">"; 
    $result_fld = mysql_query("SHOW FIELDS FROM "$table, $dbhandle); 

    while($row1 = mysql_fetch_row($result_fld)) { 
     $output .= "<field name=\"$row1[0]\" type=\"$row1[1]\""; 
     $output .= ($row1[3] == "PRI") ? " primary_key=\"yes\" />" : " />"; 
    } 

    $output .= "</table>"; 
} 

$output .= "</schema>"; 

// tell the browser what kind of file is come in 
header("Content-type: text/xml"); 
// print out XML that describes the schema 
echo $output; 

// close the connection 
mysql_close($dbhandle); 
?> 
+0

什麼不起作用? – hakre

+0

我得到表名,但沒有顯示任何內容。 – JAckie

回答

2

我認爲最好使用標準的PHP類XmlWriter這個。 看http://www.php.net/manual/en/book.xmlwriter.php

+0

你知道我會如何輸出表格中的所有數據,而無需聲明每一列?有超過20個。 – JAckie

+0

你可以像你的代碼一樣使用相同的循環,而不是$ output。=「

1
$result_tbl = mysql_query("SHOW TABLES FROM "DB_NAME, $dbhandle); 
              ^^^---typo 

$result_fld = mysql_query("SHOW FIELDS FROM "$table, $dbhandle); 
              ^^^---typo 

你在查詢了至少兩個錯別字。最有可能你想要這樣的:

$result_tbl = mysql_query("SHOW TABLES FROM " . DB_NAME, $dbhandle) or die(mysql_error()); 
and 
$result_fld = mysql_query("SHOW FIELDS FROM $table", $dbhandle) or die(mysql_error()); 

注意連接符(.)放在了第一位,並增設or die(...)。永遠不要假設查詢成功。即使查詢字符串本身在語法上是正確的,但也有太多其他原因可能導致無法檢查錯誤情況。

+0

我現在將此錯誤作爲輸出獲取:您的SQL語法中有錯誤;請查看與您的MySQL服務器版本相對應的手冊,以便在第1行 – JAckie

+0

處的'table name here'附近使用正確的語法。生成的查詢語句是什麼樣子的? '$ sql =「...」; mysql_query($ sql)或死(「Error」。mysql_error()。$ sql);' –