php - 在使用 PHP 转换 JSON 数组中的 MySql 输出时卡住了

标签 php iphone mysql json web-services

我正在制作一个 iPhone 应用程序。该应用程序的一部分允许用户在本地搜索公司。

我有一个包含可以搜索的公司的 MySql 数据库,我的网站上有一个 php 文件来接收搜索到的数据,并将所有找到的公司的 companyName 和 companyLocation 返回到我的应用程序。它看起来像这样:

<?php

if (isset($_GET["companyCitySearchField"])){
                $companyCity = $_GET["companyCitySearchField"];
                $result = search($companyCity);
                echo $result;
        }

function makeSqlConnection()
{
$DB_HostName = "******";
$DB_Name = "*******";
$DB_User = "*******";
$DB_Pass = "*******";


    $con = mysql_connect($DB_HostName,$DB_User,$DB_Pass) or die(mysql_error()); 
    mysql_select_db($DB_Name,$con) or die(mysql_error()); 

    return $con;
}

function disconnectSqlConnection($con)
{
    mysql_close($con);
}

function search($companyCity)
{
    $con = makeSqlConnection(); 
    $query = mysql_query("SELECT companyName, companyCity from Company  WHERE companyCity = '$companyCity'");
    $companies = array();
        while ($row = mysql_fetch_assoc($query)) {
        $companies['companies'][] = $row;
        print json_encode($companies);
    }   
    disconnectSqlConnection($con);  
}

?>

这在只找到一家公司时工作正常。它给了我一个完美的 JSON 数组:

{"companies":[{"companyName":"Dijkstra","companyCity":"Geldermalsen"}]}

到目前为止一切都很好。

现在,我在我的数据库中创建了另一家公司,同样以 Geldermalsen 作为位置。

数据库中共有2家公司。它现在返回的 JSON 数组没有意义:

{"companies":[{"companyName":"Dijkstra","companyCity":"Geldermalsen"}]}{"companies":[{"companyName":"Dijkstra","companyCity":"Geldermalsen"},{"companyName":"testaccount","companyCity":"Geldermalsen"}]}

出于某种原因,它似乎构成了 2 个独立的数组。一个是第一个发现的公司,一个是两者兼而有之。

我已经在网络、stackoverflow、google 甚至 'PHP 和 MySql for dummies' 这本书上搜索了好几天,我已经多次更改我的代码,无论我尝试什么,它都会继续这样做。

有谁知道我应该怎么做才能得到一个数组,其中包含所有使用此脚本找到的公司,而不是这 2 个?

非常欢迎任何帮助,在此先感谢您!

最佳答案

您正在为每一行回显 JSON,而不是为完整构建的数组。将您的 print 语句移到循环之外。

$companies = array();
    while ($row = mysql_fetch_assoc($query)) {
    $companies['companies'][] = $row;

} 
print json_encode($companies);

或者更好的是,您可能不想在搜索功能中回显任何内容,而是将其留给调用者。看来您可能已经打算在这里执行此操作:

$result = search($companyCity);
echo $result;

唯一的问题是 search() 函数不返回任何值,因此 $result 将为空。您应该决定将结果回显给客户端的位置并保持一致。

关于php - 在使用 PHP 转换 JSON 数组中的 MySql 输出时卡住了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16528292/

相关文章:

javascript - NodeJS 代码不工作

javascript - 如何将带有西里尔字母符号的 php-massive 编码为 json?

iphone - 使用 ARC 时何时将对象设置为 nil?

iphone - 如何获取提取时区( (GMT+05 :30) from systemTimeZone(NSTimeZone)

PHP 显示来自 MySQL 的图像 BLOB

php - 从 PHP 更新 MYSQL 语句

javascript - 从 PHP 创建 JavaScript Snackbar

ios - Xcode 中的约束(Swift 2 iOS 应用程序)

php - 多个查询不被执行

sql - 在 mySQL 中将字符串格式化为日期