我想使用PHP和模块SQLANYWHERE访问远程Sybase数据库。我安装了它并测试它是否正常工作:
if( ! extension_loaded('sqlanywhere') ) print("<b>SQL ANYWHRE not available</b>". "\xA") ;
如果我甚至可以像这样到达DB-Server,那我就试过了:
$host = 'xxx.xxx.xxx.xxx';
$port = xxxx;
$waitTimeoutInSeconds = 1;
if($fp = fsockopen($host,$port,$errCode,$errStr,$waitTimeoutInSeconds)){
print("<b> SQL Verbindung established</b>". "\xA");
} else {
print("<b>keine SQL not established</b>". "\xA");
}
fclose($fp);
也有效。 但我只是无法连接,这是我的连接字符串:
$connString = "Uid=".$username.";Pwd=".$password.";CommLinks=tcpip(host=".$server.";port=".$port.")";
$conn=sasql_connect($connString);
所有值都已正确配置,因为它在上面的第一次尝试中有效。
但是当我尝试加载页面时,我总是收到此错误:
Warning: sasql_connect(): SQLAnywhere: [-832] Verbindungsfehler: Fehler in den TCPIP Portoptionen in C:\xampp\htdocs\index.php on line 59
sasql_connect failed
Fatal error: Call to a member function close() on boolean in C:\xampp\htdocs\index.php on line 75
第一行表示“连接错误:TCPIP端口选项错误”
编辑:这些是我已经尝试的所有不同的connStrings:
$connString = "Uid=".$username.";Pwd=".$password.";Server=".$serverName.";host=".$server.":".$port.")";
$connString = "Uid=".$username.";Pwd=".$password.";host=".$server.":".$port.")";
$connString = "Uid=".$username.";Pwd=".$password.";host=".$server.";port=".$port;
$connString = "Uid=".$username.";Pwd=".$password.";CommLinks=tcpip(host=".$server.":".$port.")";
$connString = "Uid=".$username.";Pwd=".$password.";CommLinks=tcpip(host=".$server."Port=".$port.")";
解
我发现PHP模块所需的SQL Anywhere安装包含一个名为dbping的cmdline工具。将我的字符串从我的文本编辑器复制到cmdline我注意到我的字符串中的不可打印字符,cmdline无法解析并将其打印为“??”。在重写字符所在的部分后,连接起作用。杀了我...... 2天就可以了。
答案 0 :(得分:2)
错误非常自我解释;第59行是什么?是这一行:
$connString = "Uid=".$username.";Pwd=".$password.";CommLinks=tcpip(host=".$server.";port=".$port.")";
基本上你的端口是不正确的。您还尝试在不存在的对象上调用close()
方法。
我通读了一些文档(http://dcx.sybase.com/1200/en/dbadmin/links.html),看起来你的字符串看起来应该是这样的:
$connString = "Uid=".$username.";Pwd=".$password.";CommLinks=tcpip(host=".$server.":".$port.")";
请注意,这会将端口附加到主机(主机:1337),而不是为其提供明确的port
密钥。
答案 1 :(得分:0)
我认为这是连接数据库的问题。 只需尝试运行您的sqlanywhere数据库,如下所示:
./bin64/dbeng17 -x tcpip /path/to/database/database.db
此触发器&#34; -x tcpip&#34;将php与数据库连接起来非常重要。