我正试图让这个实时搜索正常工作。
我设想它的工作方式是,用户访问表单,输入类似94302
的值,输出的是一个带有“Santa Clara”的框,其中value=""
等于数据库字段fanDetLocID
的值。
表单的HTML
<form method="post" id="FanDetail">
<input id="zip" name="zipcode" value="US Zipcode" onFocus="clearText(this)" />
</form>
<div class="success" style="display: none;">Saved!</div>
在页面加载时调用的jQuery:
$(document).ready(function(){
$("#zip").keyup(function() {
// do magic
$.ajax({
type: "POST",
url: "../php/getFanLoc.php",
data: "zip="+ zip,
success: function(){
$('#zip').function(){$('div.success').fadeIn();};
}
});
return false;
});
});
php文件:getFanLoc.php,当输入5位数的邮政编码时由方法.keyup()
由jquery调用
<?php
/////////////////////////////////////
require_once('../cfg/dbi.php'); /////
/////////////////////////////////////
############### SANITIZE ############### //////////////
///////////////////////////////////////////////////////
$zip = htmlspecialchars(trim($_POST['zipcode'])); ///
$zip = mysql_real_escape_string($_POST['zipcode']); ///
///////////////////////////////////////////////////////
try{
$dbh = new PDO("mysql:host=$host;dbname=$dbname",$user,$pass);
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
## INSERT CLEAN DATA INTO TABLE…
$sth = $dbh->prepare(
'SELECT fanDetLocID, fanDetLocCity, fanDetLocState FROM fanDetailLocation WHERE fanDetLocZip = ?');
$sth->bindParam(1, $zip);
$sth->execute();
if ($res = $sth->fetch(PDO::FETCH_ASSOC)) {
printf('%s, %s',
htmlspecialchars($res['fanDetLocCity'], ENT_QUOTES, 'UTF-8'),
htmlspecialchars($res['fanDetLocState'], ENT_QUOTES, 'UTF-8')
);
}
}
catch(PDOException $e){
file_put_contents('../../PDODBConnectionErrors.txt', $e->getMessage(), FILE_APPEND);
}
?>
当前问题:我输入一个5位数的邮政编码,没有显示任何内容,我需要帮助您在输入5位数的邮政编码时显示此值。
我已经检查了SQL查询,这很好用。例如,它应该在输入框中输出fanDetLocCity, fanDetLocCity
的值,如Santa Barbara,CA。
答案 0 :(得分:0)
好的,您的主要问题是您正试图echo
PDOStatement
。您需要至少执行一次提取操作并从结果集中检索值。
其次,您应该真正使用绑定参数,而不是将值注入SQL字符串。
第三,我认为让数据库执行简单的字符串连接毫无意义。试试这个
$sth = $dbh->prepare(
'SELECT fanDetLocID, fanDetLocCity, fanDetLocState FROM fanDetailLocation WHERE fanDetLocZip = ?');
$sth->bindParam(1, $zip);
$sth->execute();
if ($res = $sth->fetch(PDO::FETCH_ASSOC)) {
printf('%s, %s',
htmlspecialchars($res['fanDetLocCity'], ENT_QUOTES, 'UTF-8'),
htmlspecialchars($res['fanDetLocState'], ENT_QUOTES, 'UTF-8')
);
}