자동 선택 입력 상자에 대한 연락처 이름 목록을 반환하기 위해 PDO를 사용하고 있습니다. PDO .....
$stmt = $db->prepare("SELECT ContactName, ContactID FROM `tblContacts` WHERE ContactName LIKE ? ORDER BY ContactName");
$keyword = '%' . $keyword . '%';
$stmt->bindParam(1, $keyword, PDO::PARAM_STR, 10);
$isQueryOk = $stmt->execute();
$results = array();
if ($isQueryOk) {
$results = $stmt->fetchAll(PDO::FETCH_COLUMN);
} else {
trigger_error('Error executing statement.', E_USER_ERROR);
}
자동 선택 .....
$("#keyword").keyup(function() {
var keyword = $("#keyword").val();
if (keyword.length >= MIN_LENGTH) {
$.get( "auto-complete.php", { keyword: keyword } )
.done(function( data ) {
$('#results').html('');
var results = jQuery.parseJSON(data);
$(results).each(function(key, value) {
$('#results').append('<div class="item">' + value + '</div>');
})
$('.item').click(function() {
var text = $(this).html();
$('#keyword').val(text);
})
});
} else {
$('#results').html('');
}
});
이름을 선택할 때 ContactID를 가져와야합니다. 여기와 Google을 보았지만 PDO를 처음 사용하고 약간 혼란스러워했습니다.
결과를 가져 오는 동안 가져 오기 스타일 매개 변수 PDO :: FETCH_COLUMN을 사용 하여 결과를 첫 번째 열로 제한합니다 (예제 2 참조).
이것을 다음으로 변경하십시오.
$results = $stmt->fetchAll();
스 니펫에서는 결과를 JSON 객체로 반환하지 않습니다.
추가하려고
echo json_encode($results);
나중에 jQuery 스크립트 내에서 JSON 응답에 액세스 할 수 있어야합니다. 이런 식으로 변경하십시오
$('#results').append('<div class="item" data-id="' + value.ContactID + '">' + value.ContactName + '</div>');
완전한 예
HTML
<input type="text" name="keyword" id="keyword" />
<div id="results"></div>
<script>
var min_length = 1;
$("#keyword").keyup(function () {
var keyword = $("#keyword").val();
if (keyword.length >= min_length) {
$.get("auto-complete.php", {keyword: keyword}).done(function (data) {
$('#results').html('');
var results = jQuery.parseJSON(data);
console.log(data);
$(results).each(function (key, value) {
$('#results').append('<div class="item" data-id="' + value.ContactID + '">' + value.ContactName + '</div>');
})
$('.item').click(function () {
var text = $(this).html();
console.log($(this).attr("data-id"));
$('#keyword').val(text);
})
});
} else {
$('#results').html('');
}
});
</script>
PHP
// get the keyword
$keyword = filter_input(INPUT_GET, 'keyword', FILTER_SANITIZE_SPECIAL_CHARS);
// instantiate PDO with DNS, Username, Password
$db = new PDO();
$stmt = $db->prepare("SELECT ContactName, ContactID FROM `tblContacts` WHERE ContactName LIKE ? ORDER BY ContactName");
$keyword = '%' . $keyword . '%';
$stmt->bindParam(1, $keyword, PDO::PARAM_STR, 10);
$isQueryOk = $stmt->execute();
$results = array();
if ($isQueryOk) {
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
} else {
trigger_error('Error executing statement.', E_USER_ERROR);
}
echo json_encode($results);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다