php - 使用 PHP 对表中的每一行运行 MySQL 查询

标签 php mysql

我的编程经验有限,几乎没有 PHP 经验。然而,我接到的任务需要的东西超出了我的基本 SQL 技能范围...:/

我有一个 MySQL 表(“Users”),其中包含 334 个不同的用户 ID,另一个表(“Revisions”)包含对 wiki 站点所做的所有修订,以及提交每个修订的用户的 ID 。

我想生成一个结果文件(制表符分隔),其中包含“用户”表中每个用户的 100 个修订版的随机样本以及该用户的 ID。

我的 SQL 查询如下所示:

select r.revision_id, r.revision_timestamp, r.user_id from revision as r, users as u where r.user_id = u.user_id order by rand() limit 100;

正如目前所写的,这为我提供了“用户”表中任何用户所做的 100 个修订的随机分类。我希望表中的每个用户有 100 个随机修订。

我知道这可以用 PHP 完成,可能很容易,但我不知道语法。我怎样才能做到这一点?

最佳答案

它必须是单个查询吗?如果没有,那么对用户列表进行初始查询,然后对每个用户进行查询就很简单了 - 每个用户的查询将与当前的查询相同,只是添加了 where u.user_id = [循环中的用户 ID]。就语法而言,任何基本的 PHP mysql 教程都应该足以让您执行查询,然后查看 fopen/fwrite/fclose 来生成 csv。

总体伪代码看起来像:

$file = file open "filename.csv"
$queried_users = mysql query "select u.user_id from users u"

foreach $queried_users as $user
    $entries = mysql query "select r.revision_id, r.revision_timestamp, r.user_id from revision as r, users as u where r.user_id = u.user_id and where u.user_id = " . $user['user_id'] . " order by rand() limit 100;"
    foreach $entries as $entry
        file write to $file $entry['user_id'].','.$entry['revision_id'].','.$entry['revision_timestamp'].'\n';

file close $file

请注意,通过构建这样的字符串来组装查询是不安全的(通常最好使用参数化查询),但听起来这只是内部的事情,因此您可能可以在这里摆脱它。

关于php - 使用 PHP 对表中的每一行运行 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7375612/

相关文章:

php - PHP中作为数组键的数字字符串

php添加多个持续时间以获得总持续时间

php - 我正在寻找新的更新功能或建议来修复我现有的功能

php - 如何将用户特定数据从外部数据库调用到 WordPress

mysql - bash脚本访问多个mysql数据库

MySQL group by 同时选择聚合和一条特定记录

php - 无法从 php 中的 JSON 文件获取内容

php - 统计同一个表的某个状态列出现的频率

php 5.4 mysql 扩展不工作

javascript - 更新购物车后 WooCommerce global.js 不起作用