PHP我的SQL问题与谷歌API

时间:2016-07-02 16:55:35

标签: php api

我收到错误"无法使用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();
?>

1 个答案:

答案 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符号是一个错误抑制器。您应该在测试期间将其删除。