Mysql数据库没有更新

时间:2012-12-13 22:56:10

标签: php mysql database sql-update

好的,所以我游戏中的用户都有一个页面。其他用户可以在页面上发表评论。我制作了一个脚本,用户可以将其设置为人们可以在墙上发表评论或者是否已禁用的地方。如果我手动更改数据库它可以工作,但我设置了单选按钮,它没有更新。这是表格。

<form action="settings" method="post">
Comments: <br />
Enabled:  
<input type="radio" name="change_wall" id="change_wall" value="no" checked="checked" />
<br />
Disabled: 
<input type="radio" name="change_wall" id="change_wall" value="yes" />
<br />
<input type="submit" value="Change" />
</form>

下面是数据库更新的SQL。

    <?php
    if ( isset ( $_POST['change_wall'] ) )
        {
        $change_wall = mysql_real_escape_string($_POST['change_wall']); 
        if ($cash >= 5000) {
        $sql = "UPDATE users SET disable_wall='".$change_wall."' , cash=(cash - 5000) WHERE id='".$id."'";
        $res = mysql_query($sql);
            echo  
            '<table width="800" align="center" class="SettingsTable">
              <tr>
                <td>You sucessfully changed your comment settings!</td>
              </tr>
            </table>
            <br />';
        }
        else  {
            echo 
            '<table width="800" align="center" class="SettingsTable">
              <tr>
                <td>You don\'t have enough cash to change your comment settings!</td>
              </tr>
            </table>
            <br />'; 
        }
        }
?> 

以下是用户页面的编码,用于显示他们的评论或是否已被禁用。

  <?php 
      if ($disable_wall = 0) { 
        include 'users_wall.php';
      }
      elseif ($disable_wall = 1) {
          echo 
          '<table width="800" align="center" class="DisabledWall">
          <tr>
            <td>' . $userp['name'] . '\'s ' . 'Comments Disabled!</td>
          </tr>
        </table>';
      }
    ?>

2 个答案:

答案 0 :(得分:1)

首先,确保执行sql查询 - $ cash确实是&gt; = 5000且$ id变量包含正确的值

那么,表字段'disable_wall'有什么类型? varchar还是enum?不是int?

如果上述说明没有帮助,请在脚本的最后一行后输入:

die("error: ".mysql_error());

提交表单并观察更新表时发生的错误

答案 1 :(得分:1)

因为你需要一个布尔(是/否)响应,你可以简单地将它们设置为0或1,以确保安全。
要回答您的问题,请执行

 
  $sql = "UPDATE users SET disable_wall='1' , cash=(cash - 5000);
 

并禁用墙

 
  $sql = "UPDATE users SET disable_wall='0' , cash=(cash - 5000);
 

更好的是,为它使用布尔列。

另外,请确保 $ id 是有效值,并且目前在表格中至少有一行。

更重要的是,使用PDO或MySQLi; MySQL扩展已被弃用。

希望这会有所帮助。