2011-07-29 28 views
1

一家公司最近要求我用多个PHP来连接他们拥有的多个数据库。虽然他们的大多数新数据库都是MySQL,但他们有一个是PROGRESS数据库。一切都很顺利,直到我遇到轻微的错误。PHP ODBC SQL JOIN

的代码只是j.JobNum返回以下错误运行很好:

Field j.JobNum not found in LOCATION 

如果我删除最后一个加入它工作正常。任何重叠字段都会发生同样的情况。如果行重叠,他们不能输出。

$table_name = "Customer"; 
$fields = 'j.JobNum, Name, City, State, Zip'; 

$conn = odbc_connect($dsn, $username, $password, SQL_CUR_USE_ODBC); 

$field_array = explode(', ', $fields); 

$sql = "SELECT TOP 50 ".$fields." FROM PUB.JobProd j LEFT JOIN PUB.BookOrd b ON j.OrderNum=b.OrderNum LEFT JOIN PUB.Customer c ON b.CustNum=c.CustNum LEFT JOIN PUB.JobHead jh ON j.JobNum=jh.JobNum"; 
    echo '<table>'; 
    echo '<tr><td>JobNum</td><td>Name</td><td>City</td><td>State</td><td>Zip</td></tr>'; 
    $rs = odbc_exec($conn,$sql) or die('Select failed!'); 
     while(odbc_fetch_row($rs)){ 
      echo '<tr>'; 
      foreach($field_array as $key=>$field){ 
       echo "<td>".odbc_result($rs, $field)."</td>"; 
      } 
      echo '</tr>'; 
     } 
    echo '</table>';  
odbc_close($conn); 

有没有解决方案呢?我的代码有问题吗?

回答

0

试着做这个

$sql = "SELECT TOP 50 ".$fields." FROM PUB.JobProd AS j LEFT JOIN PUB.BookOrd AS b 
ON j.OrderNum=b.OrderNum LEFT JOIN PUB.Customer AS c 
ON b.CustNum=c.CustNum LEFT JOIN PUB.JobHead AS jh 
ON j.JobNum=jh.JobNum";