Delphi通过POST传递参数给PHP
Delphi代码
************************************************************************************************************************************
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdHTTP, StdCtrls, ShellAPI;
type
TForm1 = class(TForm)
Button1: TButton;
IdHTTP1: TIdHTTP;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
strlist_ParamPost : TStringList ;
class_IdHttp : TIdHTTP ;
begin
strlist_ParamPost := TStringList.Create() ;
class_IdHttp := TIdHTTP.Create(nil);
try
// 向目标PHP网址POST参数
// strlist_ParamPost.Add('1=测试1') ;
strlist_ParamPost.Add('1=aaaaa');
// TidHTTP属性设置
class_IdHttp.ReadTimeout := 30*1000 ; // 超时设置
class_IdHttp.Post('http://localhost/DelphiRequest/index.php', strlist_ParamPost) ;
//打开网页,ShellExecute需要引入uses ShellAPI
// ShellExecute(Application.Handle, nil, 'http://localhost/DelphiRequest/index.php', nil, nil, SW_SHOWNORMAL);
finally
FreeAndNil(class_IdHttp);
strlist_ParamPost.Free() ;
end;
end;
end.
****************************************************************************************************************************************************************************************
php文件代码
新建一个文件夹DelphiRequest,然后在这个文件夹里建一个index.php写入代码
然后在输入本地地址http://localhost/DelphiRequest/index.php/就可以看到该PHP网页
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> </head> <body> <?php if(count($_POST)!= 0) { $var_PostAllParma = "" ; foreach($_POST as $var_Key => $var_Value) { $var_PostAllParma .= $var_Value."\r\n" ; } $host = 'localhost'; $database = 'test'; $username = 'root'; $password = '****'; $selectName = '1';//要查找的用户名,一般是用户输入的信息 $pdo = new PDO("mysql:host=$host;dbname=$database", $username, $password);//创建一个pdo对象 $pdo->exec("set names 'utf8'"); $sql ="UPDATE delphi_test_content SET content= '$var_PostAllParma' WHERE ID='2'"; $stmt = $pdo->prepare($sql); $rs = $stmt->execute(array($selectName)); // if ($rs) { // // PDO::FETCH_ASSOC 关联数组形式 // // PDO::FETCH_NUM 数字索引数组形式 // while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { // $name = $row['id']; // $age = $row['content']; // echo "Name: $name "; // echo "Age: $age "; // echo "\n"; // } // } $pdo = null;//关闭连接 } ?></body> </html>
**********************************************************************************************************************************************************
数据库信息(PDO方式连接数据库)
表名:delphi_test_content
字段:id(主键),content
**********************************************************************************************************************************************************
DEMO效果:
F9运行delphi 按下按钮
按下后,把‘aaaa’这个信息放在POST里传递给http://localhost/DelphiRequest/index.php,该网页获取POST值并且把值保存在表delphi_test_content的ID为2的content里
最终结果
但是如果是中文的话貌似不显示,我也不知道为啥....
后来解决了这个中文显示问题(2016.12.16)
需要添加一行代码
$a=mb_convert_encoding($var_PostAllParma, "UTF-8", "GBK");//delphi7用post传递值给php中文需要字符转码
然后把查询语句的$var_PostAllParma参数更换为$a
$sql ="UPDATE delphi_test_content SET content= '$a' WHERE ID='2'";
最后就解决中文存储到数据库的问题~
谢谢观看~
http://blog.csdn.net/s371795639/article/details/53640483
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2016-01-20 我是觉得创业永远不晚 但是绝对要谨慎,不是破釜沉舟就一定能赢的(不用拿工资啊 吃喝拉撒在公司报账就好了)
2016-01-20 thiscall仅仅应用于“C++”成员函数(this指针存放于CX寄存器,参数从右到左压)
2016-01-20 C++编译时函数名修饰约定规则(很具体),MFC提供的宏,extern "C"的作用
2016-01-20 stdcall、cdecl、fastcall、thiscall 、naked call的汇编详解
2015-01-20 修改开源软件以后仍保持更新同步
2013-01-20 D7的System.pas单元的实现部分
2013-01-20 D7的System.pas单元的声明部分