我收到错误"无法使用db:"当我在本地主机中打开此文件时。我试过将我的sql更改为sqli。有没有人知道为什么我会纠结这个错误。 非常感谢任何帮助,我有下面的代码。谢谢
<?php
require("connect.php");
// Get parameters from URL
$center_lat = $_GET["lat"];
$center_lng = $_GET["lng"];
$radius = $_GET["radius"];
// Start XML file, create parent node
$dom = new DOMDocument("1.0");
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node);
// Opens a connection to a mySQL server
$connection=mysqli_connect (localhost, $username, $password);
if (!$connection) {
die("Not connected : " . mysqli_error());
}
// Set the active mySQL database
$db_selected = mysqli_select_db($database, $connection);
if (!$db_selected) {
die ("Can\'t use db : " . mysqli_error());
}
// Search the rows in the markers table
$query = sprintf("SELECT * FROM `markers`",
mysqli_real_escape_string($center_lat),
mysqli_real_escape_string($center_lng),
mysqli_real_escape_string($center_lat),
mysqli_real_escape_string($radius));
$result = mysqli_query($query);
$result = mysqli_query($query);
if (!$result) {
die("Invalid query: " . mysqli_error());
}
header("Content-type: text/xml");
// Iterate through the rows, adding XML nodes for each
while ($row = @mysqli_fetch_assoc($result)){
$node = $dom->createElement("marker");
$newnode = $parnode->appendChild($node);
$newnode->setAttribute("id", $row['id']);
$newnode->setAttribute("name", $row['name']);
$newnode->setAttribute("address", $row['address']);
$newnode->setAttribute("lat", $row['lat']);
$newnode->setAttribute("lng", $row['lng']);
}
echo $dom->saveXML();
?>
答案 0 :(得分:1)
您发布的内容存在一些问题,您似乎已经采用了旧的MySQL_ API方法。 MySQLi_ API的使用使用略有不同的语法。
让我们一次一个地浏览它们。
$connection=mysqli_connect (localhost, $username, $password);
现在第一个参数被视为constant,需要用引号括起来:
$connection=mysqli_connect ("localhost", $username, $password);
旁注:您可以一次性使用4个参数,而不是单独的功能并使用mysqli_connect()
从手册:
$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");
然后这个:
$db_selected = mysqli_select_db($database, $connection);
连接参数首先带有MySQLi_ API。
然后这个:
mysqli_error()
该函数需要db连接参数
然后这个逃避功能:
mysqli_real_escape_string()
这也需要建立连接并作为第一个参数。
然后这一行:
$result = mysqli_query($query);
mysqli_query()
也需要数据库连接,并作为第一个参数。
以下是您可以查看的参考资料,以使您的代码正常工作; 仔细阅读:
<强>脚注:强>
此行require("connect.php");
未知包含的内容及其用于
然后$database
未知其定义的位置和方式。
您还使用了两次:
$result = mysqli_query($query);
$result = mysqli_query($query);
为什么呢?我不知道。但是你可以安全地删除一个(同时传递数据库连接作为第一个参数,如前所述)。
确保所有GET数组都包含值。
阅读sprintf
:
你现在的方法是否会失败。
最终说明:
@
中的@mysqli_fetch_assoc
符号是一个错误抑制器。您应该在测试期间将其删除。