Google Maps文档使用了已弃用的PHP-如何更新它?

https://developers.google.com/maps/documentation/javascript/mysql-to-maps

不推荐使用PHP功能来连接到MySQL数据库,即使用mysql代替mysqli或pdo.

我尝试按照本教程显示来自mySQL数据库的具有设置名称/ lat / lng的标记,但是发现PHP已过时,仅将’mysql’替换为’mysqli’给了我一个几乎空的XML文档.

这是我的PHP:

<?php

$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "pins_db";
$database = "root-pins_db";

function parseToXML($htmlStr)
{
$xmlStr=str_replace('<','&lt;',$htmlStr);
$xmlStr=str_replace('>','&gt;',$xmlStr);
$xmlStr=str_replace('"','&quot;',$xmlStr);
$xmlStr=str_replace("'",'&#39;',$xmlStr);
$xmlStr=str_replace("&",'&amp;',$xmlStr);
return $xmlStr;
}

// Opens a connection to a MySQL server
$connection=mysqli_connect ('localhost', $username, $password);

// Set the active MySQL database
$db_selected = mysqli_select_db($connection, $dbname);

// Select all the rows in the markers table
$query = "SELECT * FROM pins_table WHERE 1";
$result = mysqli_query($query);

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

// Start XML file, echo parent node
echo '<markers>';

// Iterate through the rows, printing XML nodes for each
while ($row = @mysqli_fetch_assoc($result)){
  // Add to XML document node
  echo '<marker ';
  echo 'name="' . $row['name'] . '" ';
  echo 'lat="' . $row['lat'] . '" ';
  echo 'lng="' . $row['lng'] . '" ';
  echo '/>';
}

// End XML file
echo '</markers>';

?>

生成的XML文档仅包含:

<markers/>

我在MAMP上运行PHP 7.0.15和MySQL 5.6.35.

数据库信息:

user/pw: root/root
database: pins_db
table: pins_table

桌子:

1   id  int(11)

2   datetime    datetime

3   lat float(10,6)

4   lng float(10,6)

5   name    text

我在这里想念什么吗?我刚接触PHP,而刚接触mySQL;我在网上其他任何地方都找不到答案.

解决方法:

开启php错误报告

error_reporting(E_ALL);
ini_set('display_errors', 1);

http://php.net/manual/en/function.error-reporting.php

http://php.net/manual/en/function.ini-set.php

测试查询执行是否成功执行.

$result = mysqli_query($connection,$query);
if(!$result) {
   // error returned
   die('error#002: '.mysqli_error($connection));
}

http://php.net/manual/en/mysqli.error.php

在函数调用之前删除@(在符号处),因为我们不想让php错误消失:

 while ( $row = @mysqli_fetch_assoc($result) ) {
                ^

同时检查连接是否成功

$connection = mysqli_connect('localhost', $username, $password);
if(!$connection) {
    die('error connecting: ' . mysqli_connect_error());
}

http://php.net/manual/en/mysqli.connect-error.php

mysqli_select_db也可能无法正常工作.例如,如果数据库名称不正确或不存在.

http://php.net/manual/en/mysqli.select-db.php

注意,数据库名称可以作为mysqli_connect上的第四个参数提供.

https://ericlippert.com/2014/03/05/how-to-debug-small-programs/

上一篇:Netty源码学习系列之4-ServerBootstrap的bind方法


下一篇:PHP 操作Mysql数据库添加数据示例