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

通过PHP文件使用PowerShell向PostgreSQL表插入数据

问题

现有脚本可完成数据库备份、生成随机密码、压缩备份文件并以该密码加密。目前会将密码导出至.csv文件,后续上传至FTP,但加密文件与密码同处一处无安全性可言。我希望不再导出密码至.csv,而是通过URL将密码提交至.php文件,由该文件将密码、备份日期及数据库名POST至PostgreSQL表。已建立PHP与数据库的连接,请问如何用PowerShell通过该.php文件向数据库提交这些信息?使用.php是为了避免在.PS1文件中存放数据库连接信息。

解决方案

直接用PowerShell的Invoke-RestMethod或Invoke-WebRequest命令就能向PHP接口发送POST请求,传递所需参数,具体实现如下:

1. 构造请求参数

先把要提交的数据库名、备份日期、加密密码整理成哈希表,方便转换为表单数据:

# 替换成你实际的变量值
$dbName = "target_db"
$backupDate = Get-Date -Format "yyyy-MM-dd HH:mm:ss" # 按需调整日期格式
$encryptionPassword = "生成的随机密码字符串"

# 组装POST请求参数
$postParams = @{
    db_name = $dbName
    backup_date = $backupDate
    encryption_password = $encryptionPassword
}

2. 发送POST请求到PHP接口

调用Invoke-RestMethod发送请求,指定PHP文件的访问URL:

$phpApiUrl = "http://your-server.com/save-backup-info.php" # 替换为实际PHP文件地址

try {
    # 发送表单格式的POST请求
    $response = Invoke-RestMethod -Uri $phpApiUrl -Method Post -Body $postParams -ContentType "application/x-www-form-urlencoded"
    
    # 根据PHP返回的结果输出提示
    if ($response.success) {
        Write-Host "备份信息已成功提交"
    } else {
        Write-Warning "提交失败:$($response.msg)"
    }
} catch {
    Write-Error "请求出错:$($_.Exception.Message)"
}

3. PHP端配合要点

确保你的PHP文件能正确接收POST参数并写入PostgreSQL,示例逻辑如下(已做SQL注入防护):

<?php
// 已有的PostgreSQL连接代码(提前配置好)
$pgConn = pg_connect("host=xxx dbname=xxx user=xxx password=xxx");

// 获取POST参数
$dbName = $_POST['db_name'] ?? '';
$backupDate = $_POST['backup_date'] ?? '';
$encryptionPwd = $_POST['encryption_password'] ?? '';

// 参数合法性校验
if (empty($dbName) || empty($backupDate) || empty($encryptionPwd)) {
    echo json_encode(['success' => false, 'msg' => '参数不完整']);
    exit;
}

// 插入数据到目标表(假设表名为backup_records)
$insertQuery = "INSERT INTO backup_records (db_name, backup_date, encryption_password) VALUES ($1, $2, $3)";
$insertResult = pg_query_params($pgConn, $insertQuery, [$dbName, $backupDate, $encryptionPwd]);

if ($insertResult) {
    echo json_encode(['success' => true, 'msg' => '数据保存成功']);
} else {
    echo json_encode(['success' => false, 'msg' => '数据库写入失败']);
}

pg_close($pgConn);
?>

注意事项

  • 必须指定ContentType为application/x-www-form-urlencoded,否则PHP无法通过$_POST获取参数
  • PHP端使用pg_query_params做参数绑定,避免SQL注入风险
  • PowerShell的try-catch块可以捕获网络错误或请求异常,便于排查问题

内容的提问来源于stack exchange,提问作者Tomas Lavrinavičius

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:18:17