开发商!
我正在使用Laravel框架,我需要连接到MS SQL 2014 Express数据库.我已经在.env中进行了所有正确的配置(我甚至尝试过将连接参数直接放到database.php配置中)但是在第一次请求时我总是会遇到错误:
PDOException in Connector.php line 55:
SQLSTATE[08001]: [Microsoft][ODBC Driver 11 for SQL Server]TCP Provider: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
Run Code Online (Sandbox Code Playgroud)
超时后,我总是得到这个PHP致命的:
FatalErrorException in Connector.php line 55
Invalid handle returned.
Run Code Online (Sandbox Code Playgroud)
作为开发工具我正在使用XAMPP,当我重新启动apache服务器时,有时我可以成功建立连接,但只有20-30次尝试中的1次.
Laravel正在使用PDO驱动程序,所以我尝试使用sqlsrv_connect() - 它有效!没有错误,一切都很好.
有人可以帮我配置PDO吗?Laravel只使用PDO驱动程序,因此我不能只切换到sqlsrv_connect.
我正试图在我的机器上通过PHP连接到MS SQL并运行.我正在运行IIS,安装了PHP 7.2和MS SQL Express 2017.我的基本网页正在运行,但是当我点击打开PHP页面时,连接不起作用.
session_start();
echo "Hello ";
if (isset($_POST['submit'])) {
$_SESSION["server"] = $_POST['server'];
$_SESSION["database"]= $_POST['database'];
$_SESSION["username"] = $_POST['username'];
$_SESSION["password"] = $_POST['password'];
echo $_SESSION["database"];
//CONNECTION
$serverName = $_SESSION["server"];
$connectionInfo["Database"] = $_SESSION["database"];
$connectionInfo["UID"] = $_SESSION["username"];
$connectionInfo["PWD"] = $_SESSION["password"];
echo "midway";
$conn = sqlsrv_connect($serverName, $connectionInfo);
echo "Bye";
}
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到"中间的Hello尺寸",这表明页面正在工作,直到它到达连接线.
我不确定要使用哪个sqlsrv扩展名.
我环顾四周,可以看到7和7.1的版本,但不是7.2.
我已经添加extension=php_sqlsrv_71_nts_x86.dll到php.ini的底部(并且文件存在C:\Program Files (x86)\PHP\v7.2\ext).
任何指针都会感激不尽.我花了几天时间在这上面,不要以为我会在任何地方.
谢谢
我正在尝试将 Docker 映像与 Laravel + Microsoft SQL 驱动程序一起使用。
我的泊坞窗文件:
FROM php:7.2-apache
ENV ACCEPT_EULA=Y
# Microsoft SQL Server Prerequisites
RUN apt-get update \
&& curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
&& curl https://packages.microsoft.com/config/debian/9/prod.list \
> /etc/apt/sources.list.d/mssql-release.list \
&& apt-get install -y --no-install-recommends \
locales \
apt-transport-https \
&& echo "en_US.UTF-8 UTF-8" > /etc/locale.gen \
&& locale-gen \
&& apt-get update \
&& apt-get -y --no-install-recommends install \
unixodbc-dev \
msodbcsql17
RUN docker-php-ext-install mbstring pdo pdo_mysql \
&& pecl install sqlsrv …Run Code Online (Sandbox Code Playgroud) 正在创建一个CSV文件,并想知道如何在第一行中获取列名.现在我认为它试图回应列名称,但得到0'nulls.我也想知道是否可以将每个值放在每个单元格中,我可以在excel中手动完成,但这很麻烦.

这是代码:
$result=sqlsrv_query($conn,$sql) or die("Couldn't execute query:<br>" . sqlsrv_error(). "<br>" . sqlsrv_errno());
$file_ending = "csv";
$reals=array();
//header info for browser
header("Content-Type: application/csv");
header("Content-Disposition: attachment; filename=test.csv");
header("Pragma: no-cache");
header("Expires: 0");
/*******Start of Formatting for Excel*******/
//define separator (defines columns in excel & tabs in word)
$sep = "\t"; //tabbed character
$i=0;
foreach( sqlsrv_field_metadata( $result ) as $fieldMetadata ) {
echo $fieldMetadata["Name"]+"\t";
if($fieldMetadata["Type"]=="real")//$fieldMetadata["Type"]=== SQL_REAL
{
$reals[] = $i;
}
$i++;
}
print("\n");
//end of printing column names
//start while loop to get …Run Code Online (Sandbox Code Playgroud) 我运行 SQL Server 2016。我尝试通过 PHP 脚本(PHP 版本 8)连接到它。我安装了驱动程序并在 php.ini 中添加了路径(与我的 PHP 版本相同):
...
extension=pdo_sqlsrv_80_nts
extension=pdo_sqlsrv_80_ts
extension=sqlsrv_80_nts
extension=sqlsrv_80_ts
...
Run Code Online (Sandbox Code Playgroud)
这是我的脚本:
$serverName = "<ServerName>";
$connectionInfo = array( "Database"=>"<database>", "UID"=>"<user>", "PWD"=>"<pwd>");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
echo "Connection established.<br />";
}else{
echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Array
(
[0] => Array
(
[0] => IM006
[SQLSTATE] => IM006
[1] => 0
[code] => 0
[2] => [Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr …Run Code Online (Sandbox Code Playgroud) 我有一个基于MS SQL Server 2000构建的遗留业务应用程序.我有一些基于Web的实用程序,使用带有mssql扩展名的PHP 5.2访问此数据库.
我需要重新安装Web服务器,我期待升级到PHP 5.4.不幸的是,PHP 5.3及更新版本不支持mssql扩展.Microsoft提供了sqlsrv扩展,但描述说它仅支持访问SQL Server 2005及更高版本.
如何从PHP 5.4连接到我的SQL Server 2000?有人已经解决了这个问题吗?
我想访问MS SQL Server并具有选择查询.我已经安装了dll文件并使用了sqlsrv_query.连接成功但我得到:
[Microsoft] [SQL Server Native Client 11.0] [SQL Server]无效的对象名称为错误
我使用的是PHP 5.3.1版
连接后我有这个代码
$sql = "SELECT id, latitude, longitude from job ";
$stmt = sqlsrv_query( $conn, $sql );
if( $stmt === false) {
die( print_r( sqlsrv_errors(), true) );
}
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
echo $row['latitude'].", ".$row['longitude']."<br />";
}
sqlsrv_free_stmt( $stmt);
Run Code Online (Sandbox Code Playgroud) 我有sql server数据库,它有多个架构.我尝试使用sqlsrv驱动程序从不同模式的表中选择一个,但是表示无效配置,该表不存在.如何使用sqlsrv驱动程序在表中选择架构?
MyConnection的
<?php
return [
'class' => 'yii\db\Connection',
'dsn' => 'sqlsrv:Server=192.168.10.70;Database=mydatabase', // MS SQL Server, sqlsrv driver public ip
'username' => 'user_username',
'password' => 'user_password',
'charset' => 'utf8',
];
?>
Run Code Online (Sandbox Code Playgroud)
我的模特
<?php
namespace app\models;
use Yii;
use yii\db\ActiveRecord;
class Transaction extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'schema2.transaction';
}
public static function getDb()
{
return \Yii::$app->db3; // use the "db3" application component
}
/**
* @inheritdoc
*/
public function rules()
{
return [[['id', …Run Code Online (Sandbox Code Playgroud) 如何从具有正确字段类型的数据库中获取值?
我正在使用 PDO Sqlsrv 从数据库获取数据,并且我总是以字符串形式接收数据,如下所示:customer_id : "1"我的customer_id字段类型应该是整数,customer_id : 1但phone_number字段类型是 varchar 它返回正确的字符串类型,例如:phone_number : "12345678"
编辑:
我正在使用 PHP 5.5。我已经尝试过这个。
$this->dbh->setAttribute(PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE, true);
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误Fatal error: Undefined class constant 'SQLSRV_ATTR_FETCHES_NUMERIC_TYPE'
我的 PDO 代码:
$this->dbh = new PDO('sqlsrv:Server=' . $_ENV['DB_HOST'] . ';Database=' . $_ENV['DB_NAME'], $_ENV['DB_USER'], $_ENV['DB_PASS']);
$this->dbh->exec('set names ' . $_ENV['DB_CHAR_SET']);
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->dbh->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
$this->dbh->setAttribute(PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE, true); // Got Error
$this->dbh->setAttribute(PDO::SQLSRV_ATTR_ENCODING, PDO::SQLSRV_ENCODING_UTF8);
Run Code Online (Sandbox Code Playgroud) 我设置了一台服务器,安装并运行了以下内容:
Ubuntu 20.04
NGINX 1.17.10
PHP 7.4.5
PHP 安装确实已安装 PDO SQLSRV 驱动程序并正常工作。
我需要将 PHP 5.6 添加到旧网站的同一服务器上。我能够成功安装 PHP 5.6。但我似乎无法正确安装 SQLSRV 驱动程序部分。
我之前在设置 PHP 7.4 时在服务器上安装了 mssql 工具:
apt-get install msodbcsql17 -y
apt-get install mssql-tools
apt install unixodbc-dev
pecl install sqlsrv
pecl install pdo_sqlsrv
Run Code Online (Sandbox Code Playgroud)
在尝试将其设置为 5.6 时,我确实遵循了原始安装的步骤。我运行了以下命令:
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/5.6/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/5.6/mods-available/pdo_sqlsrv.ini
phpenmod -v 5.6 sqlsrv pdo_sqlsrv
pecl config-set php_ini /etc/php/5.6/fpm/php.ini
ls /etc/php/5.6/fpm/conf.d/*sqlsrv.ini
Run Code Online (Sandbox Code Playgroud)
所有命令均成功运行。然后我将以下行添加到相关的 php.ini 文件 /etc/php/5.6/fpm/php.ini
extension=sqlsrv.so
extension=pdo_sqlsrv.so
Run Code Online (Sandbox Code Playgroud)
我重新加载并重新启动 php5.6-fpm,然后重新启动 NGINX。PHP 5.6 已成功安装,我可以通过运行 phpinfo() 查看信息。我在安装过程中没有遇到任何错误。然而,在 PDO …