如何从本地Python代码传递变量到远端PHP脚本并写入MySQL数据库
本地Python通过PHP接口操作远程MySQL的实现方案
步骤1:修改服务端PHP脚本(支持接收外部传参)
你当前的PHP脚本是硬编码的SQL逻辑,无法接收外部传递的变量,首先调整为支持参数传递,同时加入预处理逻辑避免SQL注入风险:
<?php $host_name = 'host'; $database = 'db'; $user_name = 'user'; $password = 'pass'; $conn = new mysqli($host_name, $user_name, $password, $database); // 检查连接 if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } // 接收POST传递的参数 可按需替换为$_GET使用GET方式传参 $new_test_val = isset($_POST['new_test_val']) ? (int)$_POST['new_test_val'] : 1; $condition_val = isset($_POST['condition_val']) ? (int)$_POST['condition_val'] : 0; // 预处理SQL 避免注入风险 $sql = "UPDATE test SET test = ? WHERE test = ?"; $stmt = $conn->prepare($sql); $stmt->bind_param("ii", $new_test_val, $condition_val); if ($stmt->execute() === TRUE) { echo "Record updated successfully, affected rows: " . $stmt->affected_rows; } else { echo "Error: " . $sql . "<br>" . $conn->error; } $stmt->close(); $conn->close(); ?>
将修改后的PHP文件上传到服务器原路径即可。
步骤2:编写本地Python请求代码
首先安装HTTP请求依赖:pip install requests
Python代码示例:
import requests # 替换为你的PHP文件公网可访问的完整地址 php_api_url = "http://你的服务器IP或域名/对应路径/你的php文件名.php" # 要传递的变量 可根据业务逻辑动态修改 request_data = { "new_test_val": 3, # 要设置的test字段新值 "condition_val": 2 # WHERE条件的匹配值 } try: # 发送POST请求触发PHP执行数据库操作 resp = requests.post(php_api_url, data=request_data, timeout=10) # 输出PHP接口返回的执行结果 print("执行结果:", resp.text) except Exception as e: print("请求异常:", str(e))
注意事项
- 安全建议:当前接口无访问校验,建议在PHP中增加密钥校验逻辑,比如请求时必须携带约定好的token参数,校验通过才执行数据库操作,避免被恶意调用篡改数据。
- 如需使用GET方式传参,将PHP中
$_POST替换为$_GET,Python端将请求代码替换为resp = requests.get(php_api_url, params=request_data, timeout=10)即可。 - 可根据业务需要自行扩展传递的参数数量、修改SQL逻辑实现增删改查各类操作。
内容的提问来源于stack exchange,提问作者INoble
相关产品推荐
相关产品推荐

