在delphi中调用php代码

k2fxgqgv  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(484)

我想在delphi中使用一个mysql数据库,但是我的主机服务器关闭了远程连接,所以我应该编写一个php代码并将其放入主机以读取/写入数据,然后从delphi调用这些代码我做了一些Google搜索,所有用于连接和r/w数据的php代码示例都使用echo命令在浏览器中显示结果,但是我想将这些结果传递给delphi所以我的第一个问题是如何将结果保存到某个变量中以便发送到delphi,在delphi中如何从主机调用该代码并捕获结果例如我发现了以下php代码:
config.php文件:

<?php
$config=array(
'host'=>'test.com',
'user'=>'usertest',
'password'=>'passtest',
'database'=>'testdb'
);

数据库.php:

<?php
require_once 'config.php';
MySQL_connect($config['host'],$config['user'],$config['password']) or
die("error in connection");  ////my first question is here**
MySQL_select_db($config['database']);
MySQL_set_charset("utf8");
?>

读取函数php文件:

<?php
include 'db.php';
$query1=  mysql_query("SELECT  * from test");
$query=  mysql_fetch_assoc($query1)
echo $query['id'];      ///and second question is here and next 2 line 
echo $query['name'];
echo $query['family'];
?>

***正如您所看到的,当连接到银行失败时,当查询成功运行时,结果将使用echo命令在浏览器中打印,但我想保存此结果并将其传递给delphi,因此,首先请告诉我如何将此结果保存在某个变量中,然后请告诉我如何从delphi调用此过程并捕获结果结果

jyztefdp

jyztefdp1#

简单的方法是使用idhttp1对php脚本执行请求并用json显示响应,但这并不安全

http://test.com/?r=SELECT_*_FROM_TABLENAME
$r=mysql_query($_GET['r']);

http://test.com/?action=SELECT&table=TABLENAME
$r=mysql_query($_GET['action']+' FROM '+$_GET['table']);

或者使用indy rest

flmtquvp

flmtquvp2#

我已经解决了您在php中生成连接到数据库的webservice时遇到的问题。稍后在delphi中,您可以连接到webservice并毫无问题地获取数据。
(步骤1)要创建webservice(如果您没有php经验),可以使用库nusoap。在这里,您可以找到不同的步骤来执行一个简单的web服务,以连接到mysql数据库并运行querys。这样,ws使用json返回查询。
您可以在这里看到使用nusoap的ws示例:
wsdl生成
创建过程的结构。
一些数据结果示例(在delphi中测试):
id=10的用户
前20名用户
所有用户(param=-1)
(步骤2)要连接delphi应用程序,可以使用indy(对于旧的delphi版本)或rest组件( TRESTRequest , TRESTClient , TRESTResponse )新德里版本。在这里你可以找到不同的选项和代码来连接。另一种选择是使用soap(thttprio)和wsdl导入器。
如果您想测试它,可以下载php文件和delphi代码。这个页面是西班牙语的,但是你可以使用google翻译并查看代码来理解它。

相关问题