这方面有很多问题,但我找不到一个完全符合我的情况。
我希望使用表的某些字段/列中的值来设置第三个字段/列的值
换句话说,类似于:
table races
athleteid|difficulty|score|adjustedscore
$sqlSelect = "SELECT athleteid,difficulty,score FROM races";
$res = mysql_query($sqlSelect) or die(mysql_error());
while ($row = mysql_fetch_array($res)){
$adjustedscore=difficulty*score;
$sqlupdate = "UPDATE race, set adjustedscore = '$adjustedscore' WHERE athletes = 'athletes'";
$resupdate = mysql_query($sqlupdate);
}然而,我的理解是MYSQL不支持嵌套在选择查询中的更新查询。
注意,我稍微简化了这一点。我实际上也是基于很多其他变量来计算分数的--并且可能会加入一些表来获得其他的输入--但这是基本原则。
谢谢你的建议
发布于 2017-02-13 22:04:44
首先,正如前面的评论员所说,您应该使用PDO而不是mysql_*查询。阅读关于PDO 这里的文章。
当您使用SELECT查询从DB获得数据时,您将得到数组。我建议您使用PDO 文档中的fetchAll()。
因此,您的目标是将这些数据保存在某个变量中。就像你对$row那样。
在此之后,您需要遍历每个数组并获取数据:
foreach($row as $r) { //We do this to access each of ours athlete data $adjustedscore= $row[$r]["difficulty"]* $row[$r]["score"]; //Next row is not clear for me... $query = "UPDATE race SET adjustedscore = '$adjustedscore' WHERE athletes = 'athletes'";
And to update we use PDO update [prepared statement](http://php.net/manual/en/pdo.prepared-statements.php)$stmt = $dbh->prepare($query); $stmt->execute(); }
发布于 2017-02-13 21:53:14
你可以跑:
UPDATE `races`
SET `adjustedscore` = `difficulty` * `score`
WHERE `athleteid` IN (1, 2, 3, ...)https://stackoverflow.com/questions/42213936
复制相似问题