 <p>You have an extra colon in one of your parameter array keys:</p> <pre><code>$query_params = array( ':username' =&gt; $username, ':password' =&gt; $password, ':salt' =&gt; $salt, ':email' =&gt; $email, ':level:' =&gt; $level // this should just be ':level' ); </code></pre> <p>As a side note - if you individually bind the parameters instead of passing as a whole array, you should get a more discriminating error message:</p> <pre><code>$query = "...."; $stmt = $db-&gt;prepare($query); $stmt-&gt;bindParam(":username", $username); ... $result = $stmt-&gt;execute(); </code></pre>