![](/img/trans.png)
[英]Cannot connect to MSSQL 2008 db from php using odbc and 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。
這是所有想要啟動並運行它的人的完整食譜:
這些是我遵循的原始方向
然后連接:
<?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.