2010-02-12 3 views
4

Quelqu'un peut-il me donner un exemple d'interrogation d'une base de données Pervasive PSQL à partir de PHP sur une machine Linux distante?Accès ODBC omniprésent de PHP sur Linux?

Revendications omniprésentes PHP peut y accéder, mais leurs exemples utilisent des objets COM Windows, qui ne sont pas disponibles sous Linux, et le premier lien "PHP DTO Extensions 1" qu'ils ont à télécharger est en réalité lié à un tas d'ASP .NET scripts, et est même pas du tout PHP: Pervasive PHP Examples

Répondre

2

Je vais laisser Pervasvive savoir qu'ils doivent changer l'échantillon. J'ai des contacts là-bas. En ce qui concerne l'utilisation de PSQL depuis une machine Linux, vous ne mentionnez pas la version de PSQL que vous utilisez, mais vous aurez besoin du client PSQL pour Linux. Voici un exemple que j'ai déjà utilisé pour tester la connectivité de PHP sous Linux (et WIndows) vers un serveur PSQL. Dans le odbc_connect, le "Demodata" est le nom DSN ODBC. Les deux autres paramètres sont le nom d'utilisateur et le mot de passe. Vous auriez besoin de compiler (ou activer) ODBC en 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> 
0

Si vous pouvez installer quelque chose sur le serveur Pervasive, vous pouvez essayer d'utiliser odbtp. C'est un pont entre un pilote ODBC sur le serveur et les clients qui peuvent fonctionner sous Linux ou Windows. un exemple de requête de php provenant de here est

<?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(); ?>