从mysql数据库获取数据以在jquery-ui自动完成中使用

问题描述 投票:0回答:1

我有一个输入表单,我需要使用数据库中的数据填充自动完成。我的方法似乎工作但我很确定它不是最有效的方式。 (我是php,javascript的新手)这是我的代码:

//get all organizations
$org_array = '';
$sql = "SELECT id, name FROM organizations";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$results = $stmt->fetchall(PDO::FETCH_ASSOC);
if (count($results) > 0) {
foreach ($results as $row) {
    $sql = "SELECT id, name FROM organizations WHERE id = :id";
    $stmt = $pdo->prepare($sql);
    $id = $row['id'];
    $stmt->bindValue(':id', $id);
    $stmt->execute();
    $org_id = $stmt->fetch(PDO::FETCH_ASSOC);
    //echo $org_id['name'];
    $org_array = $org_array . '"' . $org_id['name'] . '",';
}
}

以下是JS部分:

<input type="text" class="form-control autocompleteOrgs" name="newOrganization" id="newOrganization" aria-describedby="newOrganizationHelp" value="<?php echo 
$my_profile['organization']; ?>">

<script>
$(function() {
  var orgTags = [<?php echo $org_array ?>];
  $(".autocompleteOrgs").autocomplete({
    source: orgTags
  });
});
</script>
php jquery-ui-autocomplete
1个回答
1
投票

您不需要再次获取组织,更好的方法是:

$org_array = '';
$sql = "SELECT id, name FROM organizations";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$results = $stmt->fetchall(PDO::FETCH_ASSOC);
if (count($results) > 0) {
    $org_array = implode(',', array_column($results, 'name'));
}
© www.soinside.com 2019 - 2024. All rights reserved.