1

我刚刚开始使用 PDO 方法查询数据库并且遇到了一些绊脚石。

我正在尝试做的事情:用一个简单查询的结果填充一个预先输入的字段。

查询数据库的代码:

$query = $db->prepare("SELECT `customers`.`Name` FROM `customers` WHERE       `customers`.`Name` LIKE :searchterm");

$searchterm = (isset($_POST['searchterm']) === true) ? $_POST['searchterm'] : '';

$query->bindValue(':searchterm', '%' . $searchterm . '%' );

$query->execute();

$rows=$query->fetchAll(PDO::FETCH_ASSOC);
echo(json_encode($rows));

用于预先输入的 Javascript:

            $('#customer-name').typeahead({
                source: function (query, process) {
                return $.post('ajax/get_customer_names.php', { searchterm: query }, function (data) {
                console.log(data);
                return process(data);
    });
}
});

现在我知道 typeahead 需要以下格式的字符串数组

{
"one": "Singular sensation",
"two": "Beady little eyes",
"three": "Little birds pitch by my doorstep"
}

问题是我的代码目前通过发送到console.log以这种格式输出

[{"Name":"test"},{"Name":"Southern Testing"}] 

我整天都被这个问题困扰,我发现的例子都不合适。我假设我需要遍历 $rows 变量并提取字符串值,但不知道如何实现。任何人都可以让我知道我哪里出错并提供解决方案吗?

4

1 回答 1

0

可能也不是最优雅的解决方案,但我遇到了同样的问题,我在服务器端解决了这个问题:

$rows=$query->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $r){
  $array[] = $k['Name'];
}
echo json_encode($array);

这将格式化所有内容,以便提前输入。

于 2013-03-17T21:46:16.490 回答