php - SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens error -


i got error on 2 of pages , can't understand why. have rewritten code , triple checked it, can't find wrong.

the first 1 is:

 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 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();     }   } 

the second 1 is:

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  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();     }   } 

ok, long comment (no pun intended on "long" btw).

seeing if not typos (and hope they're not), have quite few binds have spaces after colon.

you need delete spaces them , wrap mysql reserved word in ticks being long, or rename other reserved word.

i.e.

set `long`=:long, ... 

reference:


footnotes:

tbh: didn't count binds, if missed something, you'll need go on them , make sure match.


edit:

"i had no idea spaces count php, thought ignored them c/c++, works now. thank again!! – bandos"

  • this isn't c/c++, it's php , spaces count in language.

Popular posts from this blog

php - How should I create my API for mobile applications (Needs Authentication) -

5 Reasons to Blog Anonymously (and 5 Reasons Not To)

Google AdWords and AdSense - A Dynamic Small Business Marketing Duo