上传Firebird数据库文件时出错

时间:2017-09-21 11:49:08

标签: php firebird

我正在使用共享主机并第一次尝试从Firebird文件中读取数据。我有一个界面,允许用户通过以下方式选择他们的.fdb文件:

HTML

<label class="title">Import by FBD File</label>
<input type="file" class="input-file input-importFDB" name="filefdb" id="filefdb" >
<input class='btn btn-primary' type='submit' id='btnImportFDB' name='btnImportFDB' value='Import'>

PHP文件

if (isset($_POST['btnImportFDB'])){
    $host = $_FILES["filefdb"]["tmp_name"];
    $username = 'SYSDBA';
    $password = 'masterkey';

    $dbh = ibase_connect($host, $username, $password);
    $stmt = 'SELECT * FROM customer;';
    $sth = ibase_query($dbh, $stmt);
    while ($row = ibase_fetch_object($sth)) {
        echo $row->CUST_NO.'<br/>';
    }
    ibase_free_result($sth);
    ibase_close($dbh);
}

我得到的错误是:

[21-Sep-2017 19:36:06 Asia/Singapore] PHP Warning:  ibase_connect(): Unable to complete network request to host &quot;localhost&quot;. Failed to establish a connection.  in /home/mywebproject/demo.mywebsite.com.my/validate/myfile.php on line 56
[21-Sep-2017 19:36:06 Asia/Singapore] PHP Warning:  ibase_query(): invalid database handle (no active connection)  in /home/mywebproject/demo.mywebsite.com.my/validate/myfile.php on line 58
[21-Sep-2017 19:36:06 Asia/Singapore] PHP Warning:  ibase_fetch_object() expects parameter 1 to be resource, boolean given in /home/mywebproject/demo.mywebsite.com.my/validate/myfile.php on line 59
[21-Sep-2017 19:36:06 Asia/Singapore] PHP Warning:  ibase_free_result() expects parameter 1 to be resource, boolean given in /home/mywebproject/demo.mywebsite.com.my/validate/myfile.php on line 62
[21-Sep-2017 19:36:06 Asia/Singapore] PHP Warning:  ibase_close() expects parameter 1 to be resource, boolean given in /home/mywebproject/demo.mywebsite.com.my/validate/myfile.php on line 63

更新我希望实现的目标:

  1. 我想允许我的用户指定位于本地计算机上的.fdb路径,该路径将在我的网站中捕获。
  2. 用户只需点击一个按钮即可将.fdb文件中的数据“转移”(上传)到我的网站。
  3. 所以我在这里得到如上所示的错误。请注意,如果我问其他方法能达到与我相同的目标吗?我是否应该要求我的用户以text / XML / excel(csv)格式执行所谓的数据转储/数据导入/数据上传?

2 个答案:

答案 0 :(得分:2)

您是将数据库文件从客户端上传到服务器以连接到它吗?至少可以说这是一件奇怪的事。通常,您将在服务器上托管数据库,并连接到它(可能在允许客户端指定要使用的数据库之后)。

在这种情况下,看起来您收到此错误是因为您的主机上没有安装Firebird服务器,或者因为它运行在与默认端口3050不同的端口上(如所示无法完成网络请求在错误中托管'localhost'。根据我的经验,与Firebird共享托管的情况很少见,因此如果他们实际提供Firebird,您可能需要咨询您的托管公司,如果是,请使用哪个端口。

由于以下原因,这可能也不会正常工作:

  • 当客户端使用Windows且服务器使用Linux时,Firebird服务器将无法打开数据库,
  • 正确配置的服务器上的Firebird服务器进程不应该能够访问来自Web服务器进程的文件

答案 1 :(得分:0)

Error:    Unable to complete network request to host &quot;localhost&quot;

注意主机名称中的引号