我有一个输入表单,我需要使用数据库中的数据填充自动完成。我的方法似乎工作但我很确定它不是最有效的方式。 (我是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>
您不需要再次获取组织,更好的方法是:
$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'));
}