输入中的回波值,一旦输入值

时间:2012-03-23 04:17:10

标签: javascript php jquery mysql

我正试图让这个实时搜索正常工作。

我设想它的工作方式是,用户访问表单,输入类似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。

1 个答案:

答案 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')
    );
}