这是我的第一个问题,非常感谢您向我描述我的问题。我使用sqlsrv库开发了一个PHP脚本,以便在使用SSH的Ubuntu(18.04)服务器中使用私有IP连接到SQL Server,我安装了使该库正常工作所需的.so并修改了php.ini以识别它。我在控制台中运行我的PHP代码,它运行完美,当它们出现时会抛出错误并正确获取数据。现在,我正在尝试集成此脚本以创建一个可以连接到SQL Server并获取登录过程数据的网页,我已经多次开发了网页的这一部分,但这是第一个出现在SQL Server。
我将向您展示我的代码:
<?php
class Db {
private $servername;
private $username;
private $password;
private $dbname;
private $conn;
function __construct($server, $user, $pass, $db) {
$this->servername = $server;
$this->username = $user;
$this->password = $pass;
$this->dbname = $db;
$this->conn = false;
}
public function connect() {
$connectionInfo = array("Database"=>$this->dbname, "UID"=>$this->username, "PWD"=>$this->password);
echo $this->conn;
$this->conn = sqlsrv_connect($this->servername, $connectionInfo);
echo "sqlsrv_connect realizado\n";
if($this->conn === FALSE) {
echo "Conexión no se pudo establecer\n";
die( print_r( sqlsrv_errors(), true));
}
}
public function loginPass($email) {
echo "Funcion accedidad\n";
$this->connect();
echo "Conexión realizada\n";
$sql = "SELECT pass FROM Users WHERE email = '{$email}'";
$query = sqlsrv_query($this->conn, $sql);
echo "Query realizado\n";
if($query === FALSE)
die( print_r( sqlsrv_errors(), true));
if( sqlsrv_fetch( $query ) === false)
die( print_r( sqlsrv_errors(), true));
echo "Logica realizada\n";
return sqlsrv_get_field($query, 0);
}
}
?>
这是SQL连接的一种更简化的实现:
<?php
$serverName = "localhost"; //serverName\instanceName
$connectionInfo = array( "Database"=>"name", "UID"=>"user", "PWD"=>"pass");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
$sql = 'SELECT data FROM Table WHERE ID = 2';
$query = sqlsrv_query($conn, $sql);
sqlsrv_fetch($query);
$data = sqlsrv_get_field($query, 0);
echo $data."\n";
}else{
echo "Conexión no se pudo establecer\n";
die( print_r( sqlsrv_errors(), true));
}
?>
两种代码均可由控制台执行,但对于Bowser执行则无效。在第一个代码中,我调用了LoginPass函数,但是当它调用connect()时,它将停止工作,更具体地说,在此行中:
$this->conn = sqlsrv_connect($this->servername, $connectionInfo);
它不会引发错误,它只是停止执行并在该行之后执行任何操作。我尝试使用chmod更改文件的权限,并使用chown将用户更改为www-data,但是得到的结果相同。我也在我的个人计算机(Ubuntu 18.04)上运行它,也不能运行(Firefox浏览器)。
¿这个问题是因为有SQL配置吗?
我通过按照Microsoft的说明从此处重新安装sqlsrv驱动程序进行修复:https ://docs.microsoft.com/zh-cn/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-ver15即使已经安装了组件,也要执行所有步骤,这就是我可以使用任何浏览器来修复与SQL Server的连接的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句