为什么提交的所有输入都是空白的?(见下文)。我相信这是由于我的JS文件中的错误。
提交的HTML表单:
<form method="post" id="FanDetail">
<textarea id="bio" name="fan_bio" cols="27" rows="3"></textarea><br />
<input id="dob" name="fan_dob" value="(e.g. 01/05/1965)" onFocus="clearText(this)" /><br />
<div class="ui-widget">
<input id="zip" name="term" value="What is your Zipcode?" onFocus="clearText(this)" /><br />
<input id="actualZip" type="hidden" name="actualzipval" value="" />
</div><!--ui-widget :: zip -->
<div class="ui-widget">
<input id="occup" type="text" name="term2" value="e.g. Computer Programmer, etc" onFocus="clearText(this)" /><br />
<input id="actualOccup" type="hidden" name="actualOccupval" value="" />
</div><!--ui-widget :: occup -->
<input id="fbkurl" type="text" name="fan_fbk" value="e.g. SportsFan12" onFocus="clearText(this)" /><br />
<input id="twiturl" type="text" name="fan_twit" value="e.g. AboutSports2012" onFocus="clearText(this)" /><br />
<input id="phoNum" type="text" name="fan_pho" value="cell or home phone" onFocus="clearText(this)" /><br />
<input style="background-image:url('../../img/save.png');" type="submit" name="saveAbout" value="" id="submit" />
</form>
处理来自html表单的输入的JS文件:
$(document).ready(function() {
$("form#FanDetail").submit(function() {
// store the values from the form input box, then send via ajax below
var bio = $('#bio').val();
var dob = $('#dob').val();
var zip = $('#actualZip').val();
var occup = $('#actualOccup').val();
var fbkurl = $('#fbkurl').val();
var twiturl = $('#twiturl').val();
var phoNum = $('#phoNum').val();
$.post(
"../../src/php/registration/about/submitvalues_about_tab.php",
$("form#FanDetail").serialize(),
function(){
$('form#FanDetail').hide(function(){
$('div.success').fadeIn();
});
});
return false;
});
});
我正在使用的PHP文件正确地获取$fan_sess_id()
变量值,但没有其他输入正在工作。
try {
$sth = null; #kill any possible previous connections
///////////////////////////////////////////////
######## Get Input to Submit ############## //
///////////////////////////////////////////////
$fanBio=$_POST['bio'];
$fanDob=$_POST['dob'];
$zipval=$_POST['zip'];
$occupval=$_POST['occup'];
$facebookurl=$_POST['fbkurl'];
$twitterurl=$_POST['twiturl'];
$phoneNum=$_POST['phoNum'];
//$fanID=1;
$fan_sess_id = session_id(); // assign $fan_sess_id to the current sessionID
### DB Connection already established above.
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$sth = $dbh->prepare("
UPDATE Fan
SET fanBio='$fanBio',fanDob='$fanDob',fanDetLocID='$zipval',occupID='$occupval',
fanFbk='$facebookurl',fanTwit='$twitterurl',fanPho='$phoneNum'
WHERE fansessID='$fan_sess_id';
");
$sth->execute();
}
最后,这是我在上面的php脚本中运行$sth->debugDumpParams();
时得到的输出:
SQL: [152]
UPDATE Fan
SET fanBio='',fanDob='',fanDetLocID='',occupID='',
fanFbk='',fanTwit='',fanPho=''
WHERE fansessID='90707e4c37762a38ffb50883ce64ee1b';
答案 0 :(得分:3)
在访问name
时,您需要将输入的$_POST
设置为您在PHP代码中使用的相同值。
例如:
在<textarea id="bio" name="fan_bio" cols="27" rows="3"></textarea>
中,将属性name
更改为bio
,使其值为$_POST["bio"]
。
当您提交HTML表单时,表单元素的name
- 属性用于引用该值,而不是id
。
答案 1 :(得分:1)
您使用错误的数组键$_POST
。您需要使用name
属性。
$fanBio=$_POST['fan_bio'];
$fanDob=$_POST['fan_dob'];
$zipval=$_POST['term'];
$occupval=$_POST['occup'];
$facebookurl=$_POST['fan_fbk'];
$twitterurl=$_POST['fan_twit'];
$phoneNum=$_POST['fan_pho'];
你还有另一个非常重要的问题。虽然您使用的是PDO,但是在准备好的语句中没有使用占位符,因此您可以对SQL注入进行广泛的开放。不是将变量直接传递给SQL,而是用占位符替换它们。
$sth = $dbh->prepare("
UPDATE Fan
SET fanBio=:fanBio,fanDob=:fanDob,fanDetLocID=:zipval,occupID=:occupval,
fanFbk=:facebookurl,fanTwit=:twitterurl,fanPho=:phoneNum
WHERE fansessID=:fan_sess_id;
");
$arr_params = array(
':fanBio'=>$fanBio,
':fanDob'=>$fanDob,
':zipval'=>$zipval,
':occupval'=>$occupval,
':facebookurl'=>$facebookurl,
':twitterurl'=>$twitterurl,
':phoneNum'=>$phoneNum,
':fan_sess_id'=>$fan_sess_id
);
// Execute the statement with the parameters array
$sth->execute($arr_params);