谁能给我一个在远程 Linux 机器上从 PHP 查询 Pervasive PSQL 数据库的示例?
Pervasive 声称 PHP 可以访问它,但他们的示例使用 Windows COM 对象,这在 Linux 上不可用,并且他们下载的第一个“PHP DTO Extensions 1”链接实际上链接到一堆 ASP .NET 脚本,并且是甚至没有 PHP: 普遍的 PHP 示例
谁能给我一个在远程 Linux 机器上从 PHP 查询 Pervasive PSQL 数据库的示例?
Pervasive 声称 PHP 可以访问它,但他们的示例使用 Windows COM 对象,这在 Linux 上不可用,并且他们下载的第一个“PHP DTO Extensions 1”链接实际上链接到一堆 ASP .NET 脚本,并且是甚至没有 PHP: 普遍的 PHP 示例
我会让 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>
我认为您需要的是 PDO 扩展http://nl.php.net/manual/en/pdo.installation.php它可以连接到任何支持 ODBC 的数据库
如果你可以在 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(); ?>