簡體   English   中英

ODBC,MSSQL,FreeTDS內部聯接未從第二個表返回數據

[英]ODBC, MSSQL, FreeTDS inner join not returning data from second table

我在Ubuntu 14.04服務器上安裝了FreeTDS。 我正在連接到MSSQL數據庫,如下所示:

$db = new PDO('odbc:Driver=FreeTDS; Server=<IP Address>; Port=1433; Database=db_name; UID=user; PWD=password;');

我正在運行以下查詢:

SELECT c.*, ct.*  
FROM Committee AS c
INNER JOIN CommitteeType as ct on c.CommitteeTypeID=ct.CommitteeTypeID
WHERE CommitteeID=$committee_id

然后我在跑步:

$statement = $db->prepare($query);
$statement->execute();
$result = $statement->fetchAll(PDO::FETCH_NAMED);

所得的數組幾乎與預期的一樣,只是從CommissionType表中的值全部為空。 當我在數據庫上的Navicat中運行完全相同的查詢時,我從第二個表中獲取了所有值。

這個驅動程序有什么問題嗎?

我在查詢語法上嘗試了多種變體,但輸出沒有任何差異。 看來,無論我查詢哪個表,我都永遠無法從內部聯接表中獲取值。

有人看到我想念的東西或經歷過類似的經歷嗎?

因此,事實證明odbc存在問題。 我現在成功地使用了dblib。

這是所有想要啟動並運行它的人的完整食譜:

這些是我遵循的原始方向

  1. 安裝軟件包freetds-bin,freetds-common,tdsodbc,odbcinst,php5-odbc和unixodbc。 這提供了您需要的庫。
  2. 將/usr/share/doc/freetds-common/examples/odbcinst.ini的內容復制到/etc/odbcinst.ini中。 這會將FreeTDS驅動程序注冊到ODBC層。
  3. 重新啟動您的網絡服務器以將ODBC模塊加載到PHP中。

然后連接:

<?php
try
{
  $db = new PDO('odbc:Driver=FreeTDS; Server=hostname_or_ip; Port=port; Database=database_name; UID=username; PWD=password;');
}
catch(PDOException $exception)
{
  die("Unable to open database.<br />Error message:<br /><br />$exception.");
}
echo '<h1>Successfully connected!</h1>';
$query = 'SELECT * FROM table_name';
$statement = $db->prepare($query);
$statement->execute();
$result = $statement->fetchAll(PDO::FETCH_ASSOC);
?>

要更正我安裝的問題,請執行以下操作:

php5-sybase(即sudo apt-get install php5-sybase)

然后這樣連接:

<?php
  try {
    $hostname = "myhost";
    $port = 10060;
    $dbname = "tempdb";
    $username = "dbuser";
    $pw = "password";
    $db = new PDO ("dblib:host=$hostname:$port;dbname=$dbname","$username","$pw");
  }
catch(PDOException $exception)
{
  die("Unable to open database.<br />Error message:<br /><br />$exception.");
}
echo '<h1>Successfully connected!</h1>';
$query = 'SELECT * FROM table_name';
$statement = $db->prepare($query);
$statement->execute();
$result = $statement->fetchAll(PDO::FETCH_ASSOC);
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM