试图将 MySQL 查询的结果放入 JavaScript 数组

Posted

技术标签:

【中文标题】试图将 MySQL 查询的结果放入 JavaScript 数组【英文标题】:Trying to get results of a MySQL query into a JavaScript array 【发布时间】:2021-03-17 13:18:04 【问题描述】:

我有一个包含地理数据的办公室 mysql 数据库。我正在尝试将办公城市列表放入 javascript 数组中。现在,我只想设置一个简单的$.ajax() 将列表记录到控制台中,但它返回 null。我只是在页面加载后在控制台中运行我的 JavaScript 函数“query()”。

这是我的 JavaScript。

function query() 
  $.ajax(
    url: "query.php",
    method: "POST",
    dataType: 'json',
    success: function(data) 
      let output = JSON.parse(data)
      console.log(output)
    
  )

这里是query.php

<?php
include 'database.php';
$sql="SELECT `Office City` FROM `offices`";
$result = $link->query($sql);

if ($result) 
    while($row = $result->fetch_assoc()) 
        array_push($result_array, $row);
    

header('Content-type: application/json');
echo json_encode($result_array);
$link->close();
?>

这里是database.php。我可以使用这个 PHP 写入 MySQL,所以我认为它是正确的。

<?php
    $hostname = "hostus.mostus.com";
    $username = "name";
    $password = "pw";
    $database = "db";
    $link = mysqli_connect($hostname, $username, $password,$database);
    if (mysqli_connect_errno()) 
        die("Connect failed: %s\n" + mysqli_connect_error());
        exit();
     

当我在控制台中运行 query() 时,它会响应“未定义”然后返回 null。

【问题讨论】:

in query.php, $result_array 没有在while循环前声明... let output = JSON.parse(data) 似乎没有必要并且可能是错误的。就做console.log(data) 您是否在浏览器的网络选项卡中看到从 PHP 返回的任何内容? @LouysPatriceBessette 成功了,谢谢。 @Dharman 我明白你的意思。另请回复:下面的数据库列名。谢谢。 【参考方案1】:

您的 sql 无效。 我之前也会初始化 $result_array 。当前,如果结果为空,则返回 null。

<?php
include 'database.php';
$sql="SELECT `Office`, `City` FROM `offices`";
$result = $link->query($sql);

$result_array = [];
if ($result) 
    while($row = $result->fetch_assoc()) 
        array_push($result_array, $row);
    

header('Content-type: application/json');
echo json_encode($result_array);
$link->close();
?>

【讨论】:

是什么让你认为 SQL 无效? @Dharman 他选择“办公城市”作为 1 列。也可能空间是错误的 是的,你认为这应该是两列?是什么让你这么认为?

以上是关于试图将 MySQL 查询的结果放入 JavaScript 数组的主要内容,如果未能解决你的问题,请参考以下文章

Python 和 Scrapy,并试图将抓取的数据放入 MariaDB/MYSQL 数据库

sql server将查询结果放入新表?

Qt C++ 类没有命名类型

如何将SQL查询结果存放到数组里面

将查询结果存储在变量中(jinja)

将一个表的查询结果插入到另一个表中(oracle、mysql、sql 、GP)