2013-10-24 71 views
2

我使用this tutorial從谷歌地圖API生成從MySQL產生從MySQL XML與谷歌腳本

XML這是我得到的錯誤:

警告:mysql_fetch_assoc()預計參數1是資源

從我可以告訴我的代碼中,$result應該通過查詢獲得資源。

有誰知道它爲什麼給這個特定的錯誤?

代碼:

<?php 

// Start XML file, create parent node 

    $dom = new DOMDocument("1.0"); 
$node = $dom->createElement("markers"); 
$parnode = $dom->appendChild($node); 
?> 
<?php 
    // connect 
    $host = "localhost"; 
    $username = 'root'; 
    $psswrd = 'root'; 
    $db = 'sql_maps'; 
    $dbc = mysqli_connect($host, $username, $psswrd, $db); 

    if(!mysqli_connect_errno()) { 
     echo 'sueccess'; } else { 
     die("Database failed: " . 
     mysqli_connect_error() . 
     " (" . mysqli_connect_errno() . ")" 
     ); 

    } 
?> 
<?php 
// Using PHP's domxml Functions to Output XML 
// Select all the rows in the markers table 

    // get data 
    $query = "SELECT * FROM markers WHERE 1"; 

    // catch resource(collection of database rows) 
    $result = mysqli_query($dbc, $query); 
    // check 
    if($result) { 
     echo 'success'; 
    } else { 
     die("connection failed"); 
    } 



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

while ($row = mysql_fetch_assoc($result)){ 
    // ADD TO XML DOCUMENT NODE 
    $node = $dom->createElement("marker"); 
    $newnode = $parnode->appendChild($node); 
    $newnode->setAttribute("name",$row['name']); 
    $newnode->setAttribute("address", $row['address']); 
    $newnode->setAttribute("lat", $row['lat']); 
    $newnode->setAttribute("lng", $row['lng']); 
    $newnode->setAttribute("type", $row['type']); 
} 

echo $dom->saveXML(); 

?> 

而且,這是什麼WHERE 1描述SELECT查詢?我假設這是指的ID,然後它會繼續從那裏的循環?

+0

'WHERE 1'是多餘的。值'1'總是爲真,所以'WHERE'選擇表的每一行。離開WHERE,你有相同的結果。 –

回答

1

$result是一個資源(否則腳本將退出"connection failed"),但不是預期的類型。

您在混合mysqlimysql -functions。

變化故障線路,以

while ($row = mysqli_fetch_assoc($result)){ 
//-----------------^ 

是什麼 'WHERE 1' 的SELECT查詢形容?
它什麼都不做,它是一個總是評估爲真的where子句,所有行都將被選中。你可以刪除它。參見:Importance of WHERE 1 in MySQL queries

+0

有趣的是,我讀過另一個線程,告訴作者他們將mysqli和mysqli混合在一起,但後來沒有想到要檢查我自己的。預期類型是什麼意思?欣賞有關資源行爲和where子句的信息。我讀過你在where子句中引用的線程,並且它似乎提示使用它的方便性? –

+0

預期的資源類型是**'mysql' ** - 資源,但mysqli_query返回的資源是一個**'mysqli' ** - 資源。 –

+0

當您使用動態where子句時,Where子句的便利性很有趣。但是你不使用它們,所以你可以完全省略where子句。 –