我在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);
除了委员会类型表中的值全为空之外,生成的数组非常符合预期。当我在数据库中的Navicat中运行完全相同的查询时,我从第二个表中获取所有值的值。
这个驱动程序有什么问题吗?
我在查询语法上尝试了很多变体,但输出没有任何差异。看来我无法从内部连接表中获取值,无论我查询哪些表。
任何人都会看到我遗失或经历过类似事情的任何事情?
答案 0 :(得分:0)
事实证明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);
?>