php - SQL 选择结果并将它们用作更新语句中的数组
问题描述
我正在尝试从我的 sql 数据库中选择 4 个随机名称。我需要在更新语句中更新这 4 个名称。我正在尝试使用 for 语句来执行此操作,但这不起作用。
问题:在这种情况下,我如何选择限制为 4 个的随机结果并使用结果更新数据库表,其中只有 where 语句中的这 4 个结果。我需要将名称与更新分开,以便在以后的体育场中对它们运行查询。
$stmt = $mysqli->prepare("SELECT id,naam,geld,slapped,slaptime,lastbananacrime,banana_safe FROM gebruikers WHERE geld > 50000 AND naam NOT IN (?)
ORDER BY RAND() LIMIT 4");
$stmt->bind_param("s",$usernamesession);
$stmt->execute();
$result = $stmt->get_result();
$data = $result->fetch_array();
for($i=0;$i<count($data['id']);$i++){
$target = $data['naam'][$i];
$stmt8 = $mysqli->prepare("UPDATE gebruikers SET geld = geld + trim(?), lastbananacrime = NOW()
WHERE naam = ? ");
$stmt8->bind_param("ss", $bananasstolerounded,$target);
$stmt8->execute();
解决方案
SQl 数据库的美妙之处在于,许多需要在 PHP 中遍历记录集的操作可以作为单个查询委托给数据库。
在这里,您随机选择名称,然后迭代该集合以单独应用更新。有了正确的 UPDATE 查询,就不需要单独的操作:
$stmt8 = $mysqli->prepare("UPDATE gebruikers
SET geld = geld + trim(?),
lastbananacrime = NOW()
WHERE geld > 50000 AND naam NOT IN (?)
ORDER BY RAND() LIMIT 4");
$stmt8->bind_param("ss", $bananasstolerounded,$usernamesession);
$stmt8->execute();
目前尚不清楚您如何为naam
. 对此查询的扩展很可能也会为您做到这一点。
推荐阅读
- linux-kernel - 如何将 ADV7282-m 添加到 linux 内核
- swift - 在测试后清理 Swizzling 函数 Swift
- javascript - 如何确保我的程序停止,直到我的 axios 请求得到解决?
- node.js - package.json:如何测试 node_modules 是否存在
- org-mode - 组织议程“参数数量错误”错误
- node.js - 如何使用 node.js 解析应用程序/ipp HTTP 请求
- ruby-on-rails - 我在 Dokku rails 应用程序中的自定义日志文件在哪里?
- react-native - 如何在浏览器中以 react-native 渲染图像
- php - 如何在 Laravel 中遍历两个具有相同键的数组
- search - Laravel通过分页搜索多对多雄辩的结果