我正在使用google maps api中的this tutorial从mysql生成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,那么它会从那里继续while循环吗?
答案 0 :(得分:1)
$result
是一个ressource(否则脚本将以"connection failed"
退出),但不是预期的类型。
您正在混合mysqli
和mysql
- 函数。
将故障线路更改为
while ($row = mysqli_fetch_assoc($result)){
//-----------------^
SELECT查询中描述的'WHERE 1'是什么?
它什么都不做,它是一个总是求值为true的where子句,所有行都将被选中。你可以删除它。请参阅:Importance of WHERE 1 in MySQL queries