首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP/MYSQL:在SELECT查询中执行更新

问PHP/MYSQL:在SELECT查询中执行更新
EN

Stack Overflow用户
提问于 2017-02-13 21:31:05
回答 2查看 70关注 0票数 1

这方面有很多问题,但我找不到一个完全符合我的情况。

我希望使用表的某些字段/列中的值来设置第三个字段/列的值

换句话说,类似于:

代码语言:javascript
复制
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不支持嵌套在选择查询中的更新查询。

注意,我稍微简化了这一点。我实际上也是基于很多其他变量来计算分数的--并且可能会加入一些表来获得其他的输入--但这是基本原则。

谢谢你的建议

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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'";

代码语言:javascript
复制
 And to update we use PDO update [prepared statement](http://php.net/manual/en/pdo.prepared-statements.php)

$stmt = $dbh->prepare($query); $stmt->execute(); }

票数 0
EN

Stack Overflow用户

发布于 2017-02-13 21:53:14

你可以跑:

代码语言:javascript
复制
UPDATE `races`
SET `adjustedscore` = `difficulty` * `score`
WHERE `athleteid` IN (1, 2, 3, ...)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42213936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档