【发布时间】:2013-05-26 17:18:33
【问题描述】:
我正在尝试对我返回的数组进行 json_encode,以便我可以将它放置在数据源的 jQuery 插件中。我的问题是我正在使用 PDO 来查询我的数据库以取回数组,但是在执行 print_r 时,我看到我从数据库中取回的每个名称都在它自己的数组中。我如何将所有这些结果放入一个数组中,这样当我执行 json_encode 时,所有这些结果都在一个 jQuery 插件的可读字符串中?
数据库查询 (PDO) -
$query = "
SELECT name
FROM `clients`
";
try
{
$stmt = $b3->prepare($query);
$stmt->execute();
}
catch(PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
$players = $stmt->fetchAll();
执行时返回的数组示例(注意我有 8000 个被返回,所以我只会发布前 5 个左右)
print_r($players);
Array
(
[0] => Array
(
[name] => ! CBC.ZXR
)
[1] => Array
(
[name] => ! marioxz
)
[2] => Array
(
[name] => ! V v :]
)
[3] => Array
(
[name] => !?!
)
[4] => Array
(
[name] => !CU @ 1337
)
所以或多或少,我将如何统一我的数组,以便当我这样做时
json_encode($players["name"]);
它将返回一个包含上述名称的 JSON 字符串。
编辑
当前代码,
$query = "
SELECT name
FROM `clients`
";
try
{
$stmt = $b3->prepare($query);
$stmt->execute();
}
catch(PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
$playerNames = $stmt->fetchAll(PDO::FETCH_COLUMN, 0);
json_encode($playerNames);
var_dump(json_last_error());
【问题讨论】:
-
json_encode返回一个值,它不会转换它的参数。存储此值 ($playerNamesJson = json_encode($playerNames);) 和/或回显它。现在你只是把结果扔掉了。 -
@raina77ow 我已经这样做了,但对我来说这看起来不像是普通的 JSON 字符串。 gophobia.com/beta/ajaxSearch.php
-
但它显然是。检查来源,而不是显示给您的页面。使用json validator检查其内容。
-
... 作为旁注:您确定需要将整个结果集传输到前端吗?对于
autocomplete的需求,通常只返回一个小的子集(与模式匹配)。 -
我正在使用 Bootstrap Typeahead,到目前为止,使用我们通过您的第一个评论获得的字符串,每当我输入一个键时,它会循环输入的键,然后当我输入超过一个键,它什么也不返回。我不确定如何调试这个......