在 Linux 上从 PHP 进行普遍的 ODBC 访问?

发布于 2024-08-21 00:48:43 字数 314 浏览 8 评论 0原文

谁能给我一个在远程 Linux 机器上从 PHP 查询 Pervasive PSQL 数据库的示例?

Pervasive 声称 PHP 可以访问它,但他们的示例使用 Windows COM 对象,这在 Linux 上不可用,并且他们提供的第一个“PHP DTO Extensions 1”下载链接实际上链接到一堆 ASP .NET 脚本,并且不是甚至根本没有 PHP: 普遍的 PHP 示例

Can anyone give me an example of querying a Pervasive PSQL database from PHP on a remote Linux machine?

Pervasive claims PHP can access it, but their examples use Windows COM objects, which isn't available on Linux, and the first "PHP DTO Extensions 1" link they have for download actually links to a bunch of ASP .NET scripts, and isn't even PHP at all:
Pervasive PHP Examples

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

柠檬心 2024-08-28 00:48:43

我会让 Pervasvive 知道他们需要更改样本。我在那里有一些联系方式。至于从 Linux 机器上使用 PSQL,您没有提及您正在使用的 PSQL 版本,但您需要适用于 Linux 的 PSQL 客户端。这是我之前用来测试从 Linux(和 WIndows)上的 PHP 到 PSQL 服务器的连接的示例。在 odbc_connect 中,“Demodata”是 ODBC DSN 名称。另外两个参数是用户名和密码。您需要在 PHP 中编译(或启用)ODBC。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>PHP Sample</TITLE>
</HEAD>
<BODY>
<?php
$conn=odbc_connect("Demodata","","",""); 
$sql="select * from class";
$rs=odbc_exec($conn,$sql);  
echo "<table border=1>\n";
$numfields = odbc_num_fields($rs);
for($i=1;$i<=$numfields;$i++){
    $fn=odbc_field_name($rs,$i);
    echo "<th>$fn</th>";
}
echo "\n";
while(odbc_fetch_row($rs)){ 
    echo "<tr>\n";
    for($i=1;$i<=$numfields;$i++){
       $fv=odbc_result($rs,$i);
       echo "<td>$fv</td>";
    }   
    echo "</tr>\n";
} 
echo "</table>\n";
echo "<p>Number of Fields: $numfields</p>\n";
?>
</BODY>
</HTML>

I'll let Pervasvive know they need to change the sample. I've got some contacts there. As for using PSQL from a Linux box, you don't mention what version of PSQL you are using but you'll need the PSQL client for Linux. Here's a sample I've used before to test connectivity from PHP on Linux (and WIndows) to a PSQL server. In the odbc_connect, the "Demodata" is the ODBC DSN name. The other two parameters are user name and password. You would need to compile (or enable) ODBC in PHP.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>PHP Sample</TITLE>
</HEAD>
<BODY>
<?php
$conn=odbc_connect("Demodata","","",""); 
$sql="select * from class";
$rs=odbc_exec($conn,$sql);  
echo "<table border=1>\n";
$numfields = odbc_num_fields($rs);
for($i=1;$i<=$numfields;$i++){
    $fn=odbc_field_name($rs,$i);
    echo "<th>$fn</th>";
}
echo "\n";
while(odbc_fetch_row($rs)){ 
    echo "<tr>\n";
    for($i=1;$i<=$numfields;$i++){
       $fv=odbc_result($rs,$i);
       echo "<td>$fv</td>";
    }   
    echo "</tr>\n";
} 
echo "</table>\n";
echo "<p>Number of Fields: $numfields</p>\n";
?>
</BODY>
</HTML>
染火枫林 2024-08-28 00:48:43

我认为你需要的是 PDO 扩展 http://nl.php.net/ Manual/en/pdo.installation.php 它可以连接到任何支持ODBC的数据库

I think what you need is the PDO extension http://nl.php.net/manual/en/pdo.installation.php it can connect to any database which supports ODBC

佼人 2024-08-28 00:48:43

如果您可以在 Pervasive Server 上安装某些东西,您可以尝试使用 odbtp。它是服务器上的 ODBC 驱动程序和可在 Linux 或 Windows 上运行的客户端之间的桥梁。取自 此处 的 php 查询示例是

<?php

$con = odbtp_connect( 'odbtp.somewhere.com',
                      'DRIVER={SQL Server};SERVER=myserver;UID=myuid;PWD=mypwd;DATABASE=mydb;' ) or die;

odbtp_set_attr( ODB_ATTR_FULLCOLINFO, TRUE );

$qry = odbtp_query( $_REQUEST['query'] ) or die;

do {
    if( ($msg = odbtp_get_message( $qry )) ) {
        echo "MESSAGE: $msg<p>";
        continue;
    }
    if( ($cols = odbtp_num_fields( $qry )) == 0 ) {
        echo odbtp_affected_rows( $qry );
        echo " rows affected<p>\n";
        continue;
    }
    echo "<table cellpadding=2 cellspacing=0 border=1>\n";
    echo "<tr>";
    for( $col = 0; $col < $cols; $col++ ) {
        echo "<td><nobr> " . odbtp_field_name( $qry, $col );
        echo " (" . odbtp_field_type( $qry, $col ) . ") </nobr></td>";
        if( odbtp_field_bindtype( $qry, $col ) == ODB_DATETIME )
            odbtp_bind_field( $qry, $col, ODB_CHAR );
    }
    echo "</tr>\n";

    while( ($rec = odbtp_fetch_array($qry)) ) {
        echo "<tr>";
        for( $col = 0; $col < $cols; $col++ ) {
            if( is_null( $rec[$col] ) ) $rec[$col] = "NULL";
            echo "<td><nobr> $rec[$col] </nobr></td>";
        }
        echo "</tr>\n";
    }
    echo "</table><p>\n";

    echo odbtp_affected_rows( $qry );
    echo " rows affected<p>\n";
}
while( odbtp_next_result( $qry ) );

odbtp_close(); ?>

If you can install something on the Pervasive Server you can try using odbtp. It is a bridge between an ODBC driver on the server and clients that can run on Linux or Windows. a query example from php taken from here is

<?php

$con = odbtp_connect( 'odbtp.somewhere.com',
                      'DRIVER={SQL Server};SERVER=myserver;UID=myuid;PWD=mypwd;DATABASE=mydb;' ) or die;

odbtp_set_attr( ODB_ATTR_FULLCOLINFO, TRUE );

$qry = odbtp_query( $_REQUEST['query'] ) or die;

do {
    if( ($msg = odbtp_get_message( $qry )) ) {
        echo "MESSAGE: $msg<p>";
        continue;
    }
    if( ($cols = odbtp_num_fields( $qry )) == 0 ) {
        echo odbtp_affected_rows( $qry );
        echo " rows affected<p>\n";
        continue;
    }
    echo "<table cellpadding=2 cellspacing=0 border=1>\n";
    echo "<tr>";
    for( $col = 0; $col < $cols; $col++ ) {
        echo "<td><nobr> " . odbtp_field_name( $qry, $col );
        echo " (" . odbtp_field_type( $qry, $col ) . ") </nobr></td>";
        if( odbtp_field_bindtype( $qry, $col ) == ODB_DATETIME )
            odbtp_bind_field( $qry, $col, ODB_CHAR );
    }
    echo "</tr>\n";

    while( ($rec = odbtp_fetch_array($qry)) ) {
        echo "<tr>";
        for( $col = 0; $col < $cols; $col++ ) {
            if( is_null( $rec[$col] ) ) $rec[$col] = "NULL";
            echo "<td><nobr> $rec[$col] </nobr></td>";
        }
        echo "</tr>\n";
    }
    echo "</table><p>\n";

    echo odbtp_affected_rows( $qry );
    echo " rows affected<p>\n";
}
while( odbtp_next_result( $qry ) );

odbtp_close(); ?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文