0

我正在尝试通过 ODBC 使用 php 对 4D 数据库进行插入查询,但出现以下错误:

SQL 错误:服务器拒绝连接:执行语句失败。, SQLExecDirect 中的 SQL 状态 08004

这是我的 php 代码:

<?php
$user = 'Super_Utilisateur';
$pass = '123';
$server = '127.0.0.1';
$driver = '4D v16 ODBC Driver 64-bit';
$sql='INSERT INTO patient(nom) VALUES ("patient100")';

$connection_string='DRIVER={'.$driver.'};SERVER='.$server.';UID='.$user.';PWD='.$pass;
$conn = odbc_connect( $connection_string , $user , $pass);
if ($conn) {

    // connected
    echo 'Connection established.' . PHP_EOL;

   // working
    $result=odbc_exec($conn,$sql);
    //$Heure= odbc_result($result,'HeureT');
    odbc_close($conn);

} else{

    // could not connect
    die("Connection could not be established.");
}
// probably not needed
odbc_close_all();
?>

谢谢,

4

2 回答 2

1

当遇到从 PHP 查询 4D 数据库的问题(通过 ODBC 或 PDO)时,尝试从 4D 本身发出的 SQL 请求以确保请求有效是一个很好的测试。

首先,在目标 4D 数据库中,您可以像以下示例一样测试您的 SQL 语句:

Begin SQL
INSERT INTO patient(nom) VALUES ("patient100")
End SQL

然后,您将检测 4D SQL 引擎是否支持该请求。

如果 SQL 语句在目标 4D 数据库中工作,那么您应该使用 SQL LOGIN 从远程 4D 应用程序进行测试。

接下来,从远程 4D 应用程序中,在“开始 SQL”之前使用“SQL 登录”,如下例所示:

SQL Login($4D_ODBC_DSN; $login; $password)
Begin SQL
INSERT INTO patient(nom) VALUES ("patient100")
End SQL

注意:确保为您的服务器使用正确的 DSN。

这样做将检测问题是来自身份验证还是来自通信协议。


来源:技术提示:使用 PDO_4D 连接时排除 SQL 查询问题

更多示例代码

于 2018-01-24T17:34:38.193 回答
0

您唯一需要更改的是 sql 周围的引号

$sql="INSERT INTO Test (Full_name) VALUES ('HansMuster');";

然后它完美地工作

于 2019-10-13T08:22:38.213 回答