 <p>Have you tested the queries actually work with the values you are giving them? ie, use phpMyAdmin or similar and try the query manually?</p> <p>I have had situations where I thought my PHP was incorrect but a small error in my SQL was the problem. </p> <p>You might also want to set PHP's error mode to E_ALL. You can do that in php.ini or through the code by having</p> <pre><code>ini_set("display_errors","2"); ERROR_REPORTING(E_ALL); </code></pre> <p>at the start of your script. It should [hopefully] give you an error that identifies your problem.</p> <hr> <p><strong>EDIT</strong></p> <p>I just noticed something with your conditions that may be the problem...</p> <p>You have:</p> <pre><code>if (!$playerLEVEL ==13) { levelUPSTATS (); $playerLEVEL = 13; //etc } </code></pre> <p>I rather suspect that if block will never run and there will be no call to levelUPSTATS(). </p> <p>You are asking <strong>if NOT $playerLEVEL is EQUAL to 13</strong> when you really want <strong>if $playerLEVEL is NOT EQUAL to 13</strong> which would make the condition:</p> <pre><code>if($playerLEVEL != 13) </code></pre> <p>Note where the <strong>!</strong> (NOT) goes.</p> <p>As an aside, you have a situation with your inequalities where certain edge cases would mean the player is two levels.</p> <p>For example, for level 2 you need between 100 and 200 EXP inclusive. But level 3 needs 200 and 400 EXP inclusive. If your player has 200EXP he is technically level 2 and 3. When the code runs it will match the 200 in the Level 2 section of code and not the Level 3 section...</p> <p>Your code:</p> <pre><code>if($playerEXPERIENCE &gt;= 100 &amp;&amp; $playerEXPERIENCE &lt;= 200) //code to make them 2 if($playerEXPERIENCE &gt;= 200 $$ $playerEXPERIENCE &lt;= 400) //code to make them 3 </code></pre> <p>That to me seems wrong - though it might be what you intended, I don't know. If it wasn't intended you should change it to:</p> <pre><code>if($playerEXPERIENCE &gt;= 100 &amp;&amp; $playerEXPERIENCE &lt; 200) </code></pre> <p>Notice the use of <strong>&lt;</strong> [LESS THAN] instead of <strong>&lt;=</strong> [LESS THAN OR EQUAL TO].</p> <p>I hope this solves your problem :)</p>