Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MySQL插入然后更新表数据_Java_Php_Mysql - Fatal编程技术网

Java MySQL插入然后更新表数据

Java MySQL插入然后更新表数据,java,php,mysql,Java,Php,Mysql,嘿,我在我的SQL/PHP/JAVA应用程序中遇到了一个小问题,我希望你们能帮助我: 我有一个java应用程序,当run连接到我的网站时,当java应用程序验证它正在运行时,它与我的网站对话,我的网站为java应用程序和网站本身分配一个会话Id 酷,到目前为止我们还不错吧 好的,我的java应用程序定期将数据发送到一个名为Dashboard.php的页面,我想做的是将数据保存到我的Mysql表中,然后当Dashboard.php从我的java应用程序接收到新数据时(sessionID相同),我希

嘿,我在我的SQL/PHP/JAVA应用程序中遇到了一个小问题,我希望你们能帮助我: 我有一个java应用程序,当run连接到我的网站时,当java应用程序验证它正在运行时,它与我的网站对话,我的网站为java应用程序和网站本身分配一个会话Id

酷,到目前为止我们还不错吧

好的,我的java应用程序定期将数据发送到一个名为Dashboard.php的页面,我想做的是将数据保存到我的Mysql表中,然后当Dashboard.php从我的java应用程序接收到新数据时(sessionID相同),我希望该表更新到刚刚接收到的新数据

这是我到目前为止使用的php,尽管它不起作用

function update($script_name, $version, $runtime, $status, $ranged, $attack, $defense, $strength, $magic, $sessionID, $username)
{
    global $db;
    $sql = "SELECT * FROM Dashboard WHERE session_id = '$sessionID'";
    try {
        $results = $db->query($sql);
        if ($results->rowCount() <= 0) {
            $query = "INSERT INTO Dashboard (script_name, version, runtime, status, ranged, attack, defense, strength, magic, session_id, username) VALUES ('$script_name', '$version', '$runtime', '$status', '$ranged', '$attack', '$defense', '$strength', '$magic', '$sessionID', $username)";
            $db->exec($query);
        } else {
            foreach ($results as $row) {
                $timerunnew = $row['runtime'] + $runtime;
                $v4new = $row['ranged'] + $range;
                $v5new = $row['attack'] + $attack;
                $v6new = $row['defense'] + $defense;
                $v7new = $row['strength'] + $strength;
                $v8new = $row['magic'] + $magic;
            }
            $db->exec("UPDATE Dashboard SET `runtime` = $timerunnew, `ranged` = $v4new, `attack` = $v5new, `defense` = $v6new, `strength` = $v7new, `magic` = $v8new WHERE session_id = '$sessionID'");
        }
    } catch (PDOException $ex) {
        echo "fail";
    }
}

我也尝试过在重复键上使用updatevalue=VALUESvalue进行实验,但是我运气不好,有人有解决方案吗?如果这是将记录插入仪表板表的唯一方法,则两条记录不可能共享同一个会话id,除非SELECT和INSERT命令之间发生竞争危险,否则将非常感谢任何帮助。在这种情况下,您应该:

确保在会话\u id上定义了唯一密钥:

ALTER TABLE Dashboard添加唯一密钥会话\u id; 理想情况下,与适当参数化的准备语句一起使用:

$qry=$db->prepare' 插入仪表板 脚本名称、版本、运行时、状态、范围、攻击、, 防御,力量,魔法,会话id,用户名 价值观 :script_name、:version、:runtime、:status、:range、:attack、, :防御,:力量,:魔法,:会话id,:用户名 关于重复密钥更新 运行时=运行时+值运行时, 攻击=攻击+价值状态, 防御=防御+价值观防御, 强度=强度+值强度, 魔力=魔力+价值魔力 '; $qry->执行[ ':script\u name'=>$script\u name, ':version'=>$version, “:runtime”=>$runtime, “:状态”=>$status, ':ranged'=>$ranged, “:攻击”=>$attack, “:$defense”=>$defense, “:强度”=>$STRENCE, “:magic”=>$magic, ':session_id'=>$sessionID, ':username'=>$username ];
在您的参数中有$range,但在$v4new=$row['range']+$range上使用$range;哦,哇,我没看到,让我改变一下,测试一下。非常感谢你,我要试一试!看看它是否有效!