【问题标题】:Updating mySQL INT with new INT用新的 INT 更新 mySQL INT
【发布时间】:2013-04-14 16:52:14
【问题描述】:

好的,对于一个基本的大纲,我正在尝试根据我的代码结果更新 mySQL 数据库中的列。

基本上它是掷骰子,如果你击败了房子,它会增加你的 5,如果你输给房子,它会减少 5。这是出于我自己的教育目的,不会公开使用。

不工作的部分是 mysq_query("UPDATE") 有赢有输。

if (isset($_POST['roll'])) {
    $rand = rand(1, 6);
    $rand1 = rand(1, 6);
    $rand2 = rand(1, 6);
    $rand3 = rand(1, 6);
    $score = $rand + $rand1;
    $score1 = $rand2 + $rand3;

    echo 'You rolled a '.$rand.' and a '.$rand1.' Totalling '.$score;?><br><?
    echo 'Your opponent rolled a '.$rand2.' and a '.$rand3.' Totalling '.$score1;?><br><br><?
    if ($score > $score1){
        echo 'Win';
        $coins = $user_data['coins'] + 5;
        mysql_query("UPDATE `users` SET `coins` = '$coins' WHERE `user_id` = $user_id");
    } else {
        echo 'Loose';
        $coins1 = $user_data['coins'] - 5;
        mysql_query("UPDATE `users` SET `coins` = '$coins1' WHERE `user_id` = $user_id");
    }
}           
?>  
<form action="playdice.php" method="POST">
    <input type="submit" name="roll" value="Roll Dice.">
</form>

【问题讨论】:

  • 最好提供相关错误消息或相关代码的输出。否则,我们无法为您提供帮助。
  • 它没有给出错误信息,也没有任何登录到 ftp。由于某种原因,它只是不更新​​该列。
  • SQL 中的加/减,例如UPDATE users SET coins = coins-5 WHERE user_id = $user_idcoins = coins+5 .. 然后获取错误?
  • 你包含连接文件了吗?
  • 您没有检查错误消息,所以没有看到错误消息也就不足为奇了。添加mysql_error()

标签: php mysql database dice


【解决方案1】:

$user_id 周围放一个',它可能是一个字符串。删除引号告诉 MySQL 它是一个整数。

【讨论】:

    【解决方案2】:

    您不需要' 周围的$coins。那些指定输入是CHAR,所以MySQL可能试图插入CHAR并拒绝,因为它是INT列。

    您似乎也没有定义要查询的连接。

    $mysqli = new mysqli("localhost", "user", "password", "database");
    ...
    if ($score > $score1){
        echo "Win";
        $coins = $user_data['coins'] + 5;
        $mysqli->query("UPDATE `users` SET `coins` = $coins WHERE `user_id` = $user_id");
    } else {
        echo "Lose";
        $coins = $user_data['coins'] - 5;
        $mysqli->query("UPDATE `users` SET `coins` = $coins WHERE `user_id` = $user_id");
    }
    

    这应该可行。 (很抱歉将您从已弃用的 mysql 语法中切换出来,但老实说我不记得了,如果您正在学习,最好还是使用 mysqli

    【讨论】:

    • 我已经尝试在发布后删除它们,它仍然没有更新。如果我回显我的 $coins / $coins1 它会将它们显示为我需要的数字,但它不会在数据库中更新。
    • @user2305310 - 编辑了我的答案,假设我不应该有一些东西。
    猜你喜欢
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 2016-07-08
    • 1970-01-01
    • 2016-05-29
    相关资源
    最近更新 更多