不会更新数据库中的记录

时间:2012-03-28 17:03:57

标签: php jquery mysql ajax post

我现在的问题: 没有值在WHERE子句中指定(硬编码)的特定ID上更新。

任何人都会看到我做错了什么?

我有一个包含大约7个字段的表单。目前,我只是试图让代码与WHERE fanID=2这样的硬编码SQL查询一起使用,然后我将使用会话变量使其工作。

我有(3)个文件:

HTML:

<form method="post" id="FanDetail">
  <textarea id="bio" name="fan_bio" />
  <input id="dob" name="fan_dob" />
  <input id="actualZip" />
  <input id="actualOccup" />
  <input id="fbkurl" />
  <input id="twiturl" />
  <input id="phoNum" />
</form>

JS文件,链接到HTML文件中

$(document).ready(function(){
    $("form#FanDetail").submit(function() {
    // store the values from the form input box, then send via ajax below
    var bio = $('#bio').attr('value');
    var dob = $('#dob').attr('value');
    var zip = $('#actualZip').attr('value');
    var occup = $('#actualOccup').attr('value');
    var fbkurl = $('#fbkurl').attr('value');
    var twiturl = $('#twiturl').attr('value');
    var phoNum = $('#phoNum').attr('value');
    $.ajax({
        type: "POST",
        url: "../../../php/registration/about/submitvalues_about_tab.php",
        data: "bio="+ bio +"&amp; dob="+ dob +"&amp; zip="+ zip +"&amp; occup="+ occup +"&amp; fbkurl="+ fbkurl +"&amp; twiturl="+ twiturl +"&amp; phoNum="+ phoNum,
        success: function(){
            $('form#FanDetail').hide(function(){$('div.success').fadeIn();});
            }
        });
    return false;
    });
});

一个PHP文件,由上面的JS文件链接:

///////////////////////////////////////////////
######## Get  Input to Submit ############## //
///////////////////////////////////////////////
$fanBio =       $_POST['fan_bio'];       //////
$fanDob =       $_POST['fan_dob'];       //////
$zipval =       $_POST['actualzipval'];  //////
$occupval =     $_POST['actualOccupval'];//////
$facebookurl =  $_POST['fan_fbk'];       //////
$twitterurl =   $_POST['fan_twit'];      //////
$phoneNum =     $_POST['fan_pho'];       //////
///////////////////////////////////////////////

try{
    ## Get current user and their session ID:
    $sessionvar = session_id();
    ### DB Connection already established above.
    $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );  

    // INSERT CLEAN DATA INTO TABLE…
    $sth = $dbh->prepare("
    UPDATE Fan 
    SET fanBio=?,fanDob=?,fanDetLocID=?,occupID=?,fanFbk=?,fanTwit=?,fanPho=?
    WHERE fanID=2
    ");
    $sth->bindParam(1,$fanBio);
    $sth->bindParam(2,$fanDob);
    $sth->bindParam(3,$zipval);
    $sth->bindParam(4,$occupval);
    $sth->bindParam(5,$facebookurl);
    $sth->bindParam(6,$twitterurl);
    $sth->bindParam(7,$phoneNum);
    $sth->execute();
} 

catch(PDOException $e){
file_put_contents('../../../../PDODBConnectionErrors.txt','ERROR: [submitvalues_about_tab.php] about '.$e->getMessage(), FILE_APPEND);  
}

我对jQuery .ajax()很陌生,所以对我很轻松。

然而,我遇到了麻烦:

  • 检查上面catch{}的错误日志 - 我的查询最初出错,但我已经修复了它们,并且 NOTHING 再次显示在其中。
  • 通过硬编码值测试查询本身 - 输入正常
  • 选中以确保jquery file/php file 正确关联 - &gt;他们

由于

1 个答案:

答案 0 :(得分:1)

一个建议 - .post()和serialize()以尽量减少您的代码:

$(document).ready(function(){
    $("form#FanDetail").submit(function() {       
        $.post(
            "../../../php/registration/about/submitvalues_about_tab.php",
            $("form#FanDetail").serialize(),
            function(){
                $('form#FanDetail').hide(function(){
                    $('div.success').fadeIn();
            });
          });
       return false;
    });
});