このエラーは2ページで発生しましたが、理由を理解できません。私はコードを書き直してそれをチェックしましたが、間違っているものは見つけられません。SQLSTATE [HY093]:無効なパラメータ番号:バインドされた変数の数がトークンの数と一致しませんエラー
最初のものは、次のとおりです。
public function academics ($id,$problem_solving , $math_understanding, $cs_understanding , $math_useful , $cs_useful, $math_ava, $cs_ava, $assigment_start, $assigment_submit, $travel_time, $stress,$assigment_when, $full_part, $pair_programming, $attending_class, $attending_labs,$attending_tutorials, $extra_reading, $p_progamming, $q_cs, $q_maths, $procrastinating_assigments, $procrastinating_studying){
try{
$stmt = $this->db->prepare("UPDATE student_data SET problem_solving=:problemS, math_understanding=:math_U, cs_understanding=: cs_u, math_useful =:m, cs_useful=:cs_u, math_ava=:ma, cs_ava=:ca, assigment_start=:ass_st, assigment_submit=:assigment_submit, travel_time =:travel_time, stress=: stress, assigment_when =:assigment_when, full_part =:full_part, pair_programming=: pair_programming, attending_class=: attending_class, attending_labs=: attending_labs, attending_tutorials =:attending_tutorials, extra_reading =:extra_reading, p_progamming=: p_progamming, q_cs=: q_cs, q_maths=: q_maths, procrastinating_assigments=:procrastinating_assigments, procrastinating_studying=:procrastinating_studying WHERE user_id=:uid");
$stmt->bindparam(":uid", $id);
$stmt->bindparam(":problemS",$problem_solving);
$stmt->bindparam(":math_U",$math_understanding);
$stmt->bindparam(":cs_u",$cs_understanding);
$stmt->bindparam(":m",$math_useful);
$stmt->bindparam(":cs_u",$cs_useful);
$stmt->bindparam(":ma",$math_ava);
$stmt->bindparam(":ca",$cs_ava);
$stmt->bindparam(":ass_st",$assigment_start);
$stmt->bindparam(":assigment_submit",$assigment_submit);
$stmt->bindparam(":travel_time",$travel_time);
$stmt->bindparam(":stress",$stress);
$stmt->bindparam(":assigment_when",$assigment_when);
$stmt->bindparam(":full_part",$full_part );
$stmt->bindparam(":pair_programming",$pair_programming);
$stmt->bindparam(":attending_class",$attending_class);
$stmt->bindparam(":attending_labs",$attending_labs);
$stmt->bindparam(":attending_tutorials",$attending_tutorials);
$stmt->bindparam(":extra_reading",$extra_reading);
$stmt->bindparam(":p_progamming",$p_progamming);
$stmt->bindparam(":q_cs",$q_cs);
$stmt->bindparam(":q_maths",$q_maths);
$stmt->bindparam(":procrastinating_assigments",$procrastinating_assigments);
$stmt->bindparam(":procrastinating_studying",$procrastinating_studying);
$stmt->execute();
} catch(PDOException $e)
{
echo $e->getMessage();
}
}
もう一つは次のとおりです。
はpublic function comps ($id,$long,$often_comp,$gaming,$research,$doc,$music,$vid,$fix,$social){
try{
$stmt = $this->db->prepare("UPDATE student_data SET long=:long, often_comp=:often , gaming=:gaming, research=:research, doc=:doc, music=:music, vid=:vid, fix=:fix, social=:social WHERE user_id=:uid");
$stmt->bindparam(":uid",$id);
$stmt->bindparam(":long",$long);
$stmt->bindparam(":often",$often_comp);
$stmt->bindparam(":gaming",$gaming);
$stmt->bindparam(":research",$research);
$stmt->bindparam(":doc",$doc);
$stmt->bindparam(":music",$music);
$stmt->bindparam(":vid",$vid);
$stmt->bindparam(":fix",$fix);
$stmt->bindparam(":social",$social);
$stmt->execute();
} catch(PDOException $e)
{
echo $e->getMessage();
}
}
Typo、多分 ':cs_u'?また、その名前を2回使用します。 – chris85
[[MySQLのテーブル名または列名として予約語を使用するために構文エラーが発生する]](http://stackoverflow.com/questions/23446377/syntax-error-due-to MySQLの予約語であり、そのためにクローズされる可能性がある 'long'となっている^ –
^のように予約語としての予約語として使用されています。もし誰かがそれに答えてポップしたら、その可能性のある詐欺で私はそれを閉じます。 –