我想将数据输入表格。使用刚刚输入的数据,我想将3列的值相加,然后将该数字插入表中第4列。
我的初始代码:
<?php
$post = file_get_contents('php://input');
$updatedJSONdata = json_decode($post, true);
$numOfStarsLevelOne = $updatedJSONdata["numOfStarsLevelOne"];
$numOfStarsLevelTwo = $updatedJSONdata["numOfStarsLevelTwo"];
$numOfStarsLevelThree = $updatedJSONdata["numOfStarsLevelThree"];
$db = new PDO('mysql:host=localhost;dbname=gametable', 'root', '');
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
$sql = "INSERT INTO gameData(
numOfStarsLevelOne,
numOfStarsLevelTwo,
numOfStarsLevelThree)
VALUES (
'$numOfStarsLevelOne',
'$numOfStarsLevelTwo',
'$numOfStarsLevelThree')";
$testInsert = $db->prepare($sql);
$testInsert->execute();
我的猜测是我需要进行第二次查询,例如
$sqlTwo = "SELECT (numOfStarsLevelOne
+ numOfStarsLevelTwo
+ numOfStarsLevelThree) as total from gameData";
$secondInsert = $db->prepare($sqlTwo);
$secondInsert->execute();
但我不确定如何存储第二个查询的结果,以便可以将其插回到gameData中。
我希望最终能够进行其他查询,例如
$sqlThree = "INSERT into gamedata(totalNumOfStars) values("result of second query stored as a variable")";
答案 0 :(得分:0)
&#39;我认为这就是你要找的东西:
$total1 = $numOfStarsLevelOne + $numOfStarsLevelTwo + $numOfStarsLevelThree;
$sql = "INSERT INTO gameData(
numOfStarsLevelOne,
numOfStarsLevelTwo,
numOfStarsLevelThree,
totalNumOfStars)
VALUES (
'$numOfStarsLevelOne',
'$numOfStarsLevelTwo',
'$numOfStarsLevelThree',
'$total1')";
答案 1 :(得分:0)
你考虑过这个吗?
INSERT INTO gameData(numOfStarsLevelOne, numOfStarsLevelTwo, numOfStarsLevelThree)
VALUES ($numOfStarsLevelOne, $numOfStarsLevelTwo, $numOfStarsLevelThree,
$numOfStarsLevelOne + $numOfStarsLevelTwo + $numOfStarsLevelThree
);
注意:我删除了单引号,因为这些可能是数字。但是,您应该使用参数,而不是查询字符串。
如果您希望值始终是最新的,请使用触发器。或者,创建一个视图:
create view v_gamedata as
select gd.*,
(numOfStarsLevelOne + $numOfStarsLevelTwo + $numOfStarsLevelThree) as total
from gamedata;
或者,在最新版本的MySQL中,您可以创建一个计算列。