You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下向PHP脚本传递MySQL表名参数的实现及代码示例求助

PHP命令行传参实现MySQL表对比生成CSV

下面给你两种适配实际场景的命令行传参实现方式,直接替换你现有脚本里的固定表名逻辑即可:

方法1:用$argv直接获取位置参数

$argv是PHP内置数组,$argv[0]是脚本文件名,后续元素就是你传入的参数,适合参数顺序固定的简单场景。

<?php
// createcsv.php
// 检查是否传入了两个必填表名参数
if (count($argv) !== 3) {
    echo "用法: php createcsv.php <旧表名> <新表名>\n";
    echo "示例: php createcsv.php products_february products_march\n";
    exit(1);
}

// 提取传入的两个表名
$oldTable = $argv[1];
$newTable = $argv[2];

echo "开始对比表: {$oldTable} 和 {$newTable}\n";

// --------------------------
// 这里替换成你的MySQL对比逻辑
// 示例:模拟生成差异数据
$diffData = [
    ['product_id', 'name', 'change_type'],
    ['101', '无线耳机', '新增'],
    ['102', '蓝牙音箱', '价格修改'],
    ['103', '有线耳机', '删除']
];
// --------------------------

// 生成带表名标识的CSV文件
$csvFileName = "table_diff_{$oldTable}_vs_{$newTable}.csv";
$file = fopen($csvFileName, 'w');
foreach ($diffData as $row) {
    fputcsv($file, $row);
}
fclose($file);

echo "差异CSV已生成: {$csvFileName}\n";
?>

运行命令:

php createcsv.php products_february products_march

方法2:用getopt获取命名参数(更直观)

如果担心参数顺序搞混,用命名参数更清晰,适合后续可能加更多参数的场景。

<?php
// createcsv.php
// 定义可接受的命令行选项:--old和--new都需要带参数
$options = getopt('', ['old:', 'new:']);

// 检查必填参数是否齐全
if (!isset($options['old']) || !isset($options['new'])) {
    echo "用法: php createcsv.php --old <旧表名> --new <新表名>\n";
    echo "示例: php createcsv.php --old products_february --new products_march\n";
    exit(1);
}

// 提取表名
$oldTable = $options['old'];
$newTable = $options['new'];

echo "开始对比表: {$oldTable} 和 {$newTable}\n";

// --------------------------
// 替换成你的MySQL对比逻辑
$diffData = [
    ['product_id', 'name', 'change_type'],
    ['101', '无线耳机', '新增'],
    ['102', '蓝牙音箱', '价格修改'],
    ['103', '有线耳机', '删除']
];
// --------------------------

// 生成CSV文件
$csvFileName = "table_diff_{$oldTable}_vs_{$newTable}.csv";
$file = fopen($csvFileName, 'w');
foreach ($diffData as $row) {
    fputcsv($file, $row);
}
fclose($file);

echo "差异CSV已生成: {$csvFileName}\n";
?>

运行命令:

php createcsv.php --old products_february --new products_march

注意事项

  • 确保服务器上PHP命令行环境可用,执行php -v验证版本
  • 实际使用时,把示例里的模拟差异数据部分,替换成你的MySQL查询、对比逻辑即可
  • 如果需要处理中文等特殊字符,建议在打开文件时指定编码:fopen($csvFileName, 'w')改成fopen($csvFileName, 'w')后,加fwrite($file, "\xEF\xBB\xBF");写入UTF-8 BOM

内容的提问来源于stack exchange,提问作者Jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 22:26:19