上传 Firebird 数据库文件时出错
Error when upload Firebird database file
我正在使用共享主机并且第一次尝试从 Firebird 文件中读取数据。我有一个界面,允许用户通过下面 select 他们的 .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 "localhost". 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
更新我想要实现的目标:
- 我想允许我的用户指定位于他们本地机器上的 .fdb 路径,该路径将被捕获到我的网站中。
- 用户只需单击一个按钮即可将 .fdb 文件中的数据'transfer'(上传)到我的网站。
- 所以我得到了如上所示的错误。介意我问一下还有哪些其他方法可以实现与我相同的objective?我是否应该只要求我的用户以 text/XML/excel(csv) 格式执行所谓的数据 dump/data import/data 上传?
您是从客户端上传数据库文件到服务器来连接吗?至少可以说,这是一件奇怪的事情。通常你会在服务器上托管数据库,然后连接到它(可能在允许客户端指定要使用的数据库之后)。
在这种情况下,您收到此错误似乎是因为您的主机上没有安装 Firebird 服务器,或者因为它运行在与默认端口 3050 不同的端口上(如 Unable 所示在错误中完成对主机 'localhost' 的网络请求)。以我的经验,与 Firebird 共享托管的情况很少见,因此您可能需要咨询您的托管公司,看看他们是否真的提供 Firebird,如果是的话,应该使用哪个端口。
这将(可能)也不能正常工作,原因如下:
- 当客户端使用Windows而服务器使用Linux时,Firebird服务器将无法打开数据库,
- 正确配置的服务器上的 Firebird 服务器进程应该无法从网络服务器进程访问文件
Error: Unable to complete network request to host "localhost"
注意主机名中的引号
我正在使用共享主机并且第一次尝试从 Firebird 文件中读取数据。我有一个界面,允许用户通过下面 select 他们的 .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 "localhost". 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
更新我想要实现的目标:
- 我想允许我的用户指定位于他们本地机器上的 .fdb 路径,该路径将被捕获到我的网站中。
- 用户只需单击一个按钮即可将 .fdb 文件中的数据'transfer'(上传)到我的网站。
- 所以我得到了如上所示的错误。介意我问一下还有哪些其他方法可以实现与我相同的objective?我是否应该只要求我的用户以 text/XML/excel(csv) 格式执行所谓的数据 dump/data import/data 上传?
您是从客户端上传数据库文件到服务器来连接吗?至少可以说,这是一件奇怪的事情。通常你会在服务器上托管数据库,然后连接到它(可能在允许客户端指定要使用的数据库之后)。
在这种情况下,您收到此错误似乎是因为您的主机上没有安装 Firebird 服务器,或者因为它运行在与默认端口 3050 不同的端口上(如 Unable 所示在错误中完成对主机 'localhost' 的网络请求)。以我的经验,与 Firebird 共享托管的情况很少见,因此您可能需要咨询您的托管公司,看看他们是否真的提供 Firebird,如果是的话,应该使用哪个端口。
这将(可能)也不能正常工作,原因如下:
- 当客户端使用Windows而服务器使用Linux时,Firebird服务器将无法打开数据库,
- 正确配置的服务器上的 Firebird 服务器进程应该无法从网络服务器进程访问文件
Error: Unable to complete network request to host "localhost"
注意主机名中的引号