连接字符串问题。版本 - Sage Line 50v24、PHP 7.2.2、Windows Server 2012 R2 64 位。
抱歉,如果我遗漏了什么 - 请在评论中询问任何遗漏的信息。我花了几个小时和几个小时来研究这个并尝试不同的东西。谢谢!:-)
<?php
$user="myuser";
$pass="mypass";
$connstring="Driver={SageLine50v24};Server=localhost;Database=\\\server1\\uncpath\\companyname\\accdata\\";
echo $connstring;
$conn=odbc_connect($connstring,$user,$pass);
$sql="SELECT * FROM SALES_LEDGER";
$rs=odbc_exec($conn,$sql);
var_dump($rs);
odbc_close($conn);
?>
我相信 ODBC 驱动程序配置正确,因为它可以通过 Excel 工作。
我已经广泛搜索并阅读了所有关于它的 SO 问题。这指出了 ACCDATA 在 PHP 中至关重要之后的最后一个反斜杠(尽管 ODBC 驱动程序在 Excel 或其他程序中不需要它;)
我尝试过的上述代码的变体包括;
- 数据库本地路径而不是 UNC 路径
- 带空格和不带空格的驱动程序名称
- 带和不带引号的服务器和数据库
我尝试的代码的另一个变体,但是错误报告没有返回任何答案;
<?php
error_reporting(E_ALL);
echo "<html>";
echo "<body>";
$user="myuser";
$pass="mypass";
$connstring="'Driver={SageLine50v24};Server=localhost;Database=\\\server1\\uncpath\\companyname\\accdata\\'";
echo $connstring;
$conn=odbc_connect($connstring,$user,$pass);
echo odbc_error($conn);
if (!$conn){exit("Connection Failed: " . $conn);}
$sql="SELECT * FROM SALES_LEDGER";
$rs=odbc_exec($conn,$sql);
var_dump($rs);
if (!$rs){exit("Error in SQL");}
echo "<table><tr>";
echo "<th>account</th>";
echo "<th>name</th></tr>";
while (odbc_fetch_row($rs))
{
$account=odbc_result($rs,"account_ref");
$coname=odbc_result($rs,"name");
echo "<tr><td>$account</td>";
echo "<td>$coname</td></tr>";
}
odbc_close($conn);
echo "</table>";
echo "</body>";
echo "</html>";
?>