输入中的回声值,一旦键入值

Echo Value in Input, Once Value is Typed

本文关键字:回声 输入      更新时间:2023-09-26

我正在努力让这个实时搜索正常工作。

我设想它的工作方式是,用户访问表单,输入类似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位邮政编码时,jquery通过方法.keyup()调用该文件

 <?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。

好的,您的主要问题是尝试echoPDOStatement。您需要至少执行一次提取操作,并从结果集中检索值。

其次,您应该真正使用绑定参数,而不是将值注入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')
    );
}