标签: sqlsrv

Docker:unixodbc.h 没有这样的文件或目录。已安装 unixodbc-dev 时出现“pecl install sqlsrv”错误

直到几天前,这一直在进行。我们正在使用以下代码构建一个 docker 容器,但这是尝试“pecl install sqlsrv”时发生的错误。尝试从该容器中的 PHP 连接到 mssql 服务器。有比我聪明的人有什么想法吗?

泊坞窗文件:

FROM  --platform=linux/amd64 php:8.0-fpm

RUN apt-get update && apt-get -y install nano apt-utils libxml2-dev gnupg \
    && apt-get install -y zlib1g-dev \
    && apt-get install -y libzip-dev \
    && docker-php-ext-install zip 

RUN apt-get -y install libicu-dev gcc g++ make autoconf libc-dev pkg-config libssl-dev apt-transport-https libgss3 

# Install MS ODBC Driver for SQL Server
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
    && curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list \
    && apt-get update

# …
Run Code Online (Sandbox Code Playgroud)

php sql-server docker sqlsrv fpm

27
推荐指数
3
解决办法
4764
查看次数

用于SQL Server的SQLSRV PHP不是有效的Win32应用程序

这是我的设置

  • Windows Server 2008 R2 64位
  • Apache 2.4.4 64位
  • PHP 5.4.15 32位(64位仍在实验中),线程安全,VC9编译器
  • Microsoft SQL Server 2012 Native Client 64位
  • Microsoft Visual C++ 2010 x86和x64

我需要加载Microsoft的SQLSRV库.

我已将'extension = php_sqlsrv_54_ts.dll'添加到php.ini并将'php_sqlsrv_54_ts.dll'复制到安装了PHP的ext文件夹中.

当我重新启动apache时,我的php错误日志中出现以下错误,并且phSfo中未列出SQLSRV.

PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\php5\ext\php_sqlsrv_54_ts.dll' - %1 is not a valid Win32 application.
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

编辑出于测试目的,我刚刚安装了PHP 5.5.10 64位和VC 2012,但错误仍然相同:(

php sql-server apache sqlsrv

15
推荐指数
1
解决办法
3万
查看次数

PHP sqlsrv查询到数据库

我从MySQL迁移到MS SQL Server,并尝试从例程表中获取所有数据.我已连接但不确定如何使用sqlsrv获取数据.这是我走了多远:

$conn_array = array (
    "UID" => "sa",
    "PWD" => "root",
    "Database" => "nih_bw",
);
$conn = sqlsrv_connect('BILAL', $conn_array);
if ($conn){
    echo "connected";
    $result = sqlsrv_query($db->db_conn,"SELECT * FROM routines");
}else{
    die(print_r(sqlsrv_errors(), true));
}
sqlsrv_close($conn);
?>
Run Code Online (Sandbox Code Playgroud)

php sql sql-server sqlsrv

11
推荐指数
1
解决办法
4万
查看次数

sqlsrv_num_rows不返回任何值

我试图获取查询中返回的行数.循环遍历结果的while循环有效,但由于某种原因,sqlsrv_num_rows不返回任何值:

$result = "SELECT * from dtable WHERE id2 = 'apple'";
$query = sqlsrv_query($conn, $result);

$row_count = sqlsrv_num_rows($query);
echo $row_count;

while($row = sqlsrv_fetch_array($query))
{
      echo 'yes';
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

php sqlsrv

11
推荐指数
1
解决办法
2万
查看次数

如何使用sqlsrv和"?"在php中执行存储过程 样式参数

我已经查看了其他几个看起来与问题相同的问题(来自标题).但是,我的情况有点不同.

以下工作(即我获得"成功",我的数据库执行我在运行给定变量的过程时所期望的):

$sql = "MyDB.dbo.myProcedure {$var1}, {$var2}, {$var3}";
$result = sqlsrv_query($myConn, $sql);
if (!$result) {
    echo 'Your code is fail.';
}
else {
    echo 'Success!';
}
Run Code Online (Sandbox Code Playgroud)

我想通过使用参数创建SQL字符串来避免(或减少)SQL注入的可能性.例如:

$sql = "select * from aTable where col1 = ? AND col2 = ?";
$result = sqlsrv_query($myConn, $sql, array($var1, $var2));
//please note. This code WILL work!
Run Code Online (Sandbox Code Playgroud)

但是,当我使用存储过程执行此操作时,它会失败.它失败,没有通过sqlsrv_errors()报告错误,没有在数据库中采取任何操作,和$result === false.

需要说明的是,以下内容失败:

$sql = "MyDB.dbo.myProcedure ?, ?, ?";
$result = sqlsrv_query($myConn, $sql, array($var1, $var2, $var3));
Run Code Online (Sandbox Code Playgroud)

同样,以相同方式创建的prepare/execute语句也将失败:

$sql = "MyDB.dbo.myProcedure ?, ?, ?";
$stmt …
Run Code Online (Sandbox Code Playgroud)

php sql stored-procedures sql-server-2005 sqlsrv

10
推荐指数
2
解决办法
3万
查看次数

php 7无法初始化sqlsrv

我整日搜索在php 7 VC14 x64线程安全上找到sqlsrv dll的解决方案,但我没有找到解决方案.有没有人解决了这个问题:

[04-Oct-2015 19:48:05 UTC] PHP Warning:  PHP Startup: pdo_sqlsrv: Unable to initialize module
Module compiled with module API=20131226
PHP    compiled with module API=20141001
These options need to match
 in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)

这是我的php7 RC4信息:

System  Windows NT 6.0 build 6002 (Windows Server 2008 Standard Edition Service Pack 2) AMD64
Build Date  Sep 29 2015 17:15:28
Compiler    MSVC14 (Visual C++ 2015)
Architecture    x64
Run Code Online (Sandbox Code Playgroud)

dll php-ini sqlsrv php-7

9
推荐指数
2
解决办法
3万
查看次数

如何指向手动安装Microsoft ODBC Driver 13

我正在尝试在platform.sh上设置Microsoft ODBC驱动程序,以便我可以使用PDO_SQLSRV和SQLSRV PHP扩展.apt和其他sudo命令是有限的.但是,在构建期间,我可以设置环境变量,如LD_LIBRARY_PATH.

这是我到目前为止所尝试的.

  1. 我下载了https://packages.microsoft.com/ubuntu/16.04/prod/pool/main/m/msodbcsql/并从包中提取了所有文件.
  2. 我将提取的文件复制到服务器
  3. 试过:export LD_LIBRARY_PATH="($pwd):$LD_LIBRARY_PATH"LD_LIBRARY_PATH="($pwd):$LD_LIBRARY_PATH" /usr/sbin/php-fpm7.0

不过,我收到以下错误:

SQLSTATE[IMSSP]: This extension requires the Microsoft ODBC Driver 13
for SQL Server to communicate with SQL Server. Access the following 
URL to download the ODBC Driver 13 for SQL Server for x86: 
http://go.microsoft.com/fwlink/?LinkId=163712
Run Code Online (Sandbox Code Playgroud)

更新

我执行时满足所有依赖项LD_LIBRARY_PATH=$(pwd) ldd libmsodbcsql-13.1.so.4.0.但是,当我启动时,LD_LIBRARY_PATH="$(pwd):$LD_LIBRARY_PATH" /usr/sbin/php-fpm7.0我仍然看到上面显示的错误.

php odbc pdo sqlsrv

9
推荐指数
1
解决办法
829
查看次数

错误1错误:安装sqlsrv时"make"失败

我正在尝试使用页面中的命令安装sqlsrv .但是,在跑步时

pecl install sqlsrv-4.2.0preview
Run Code Online (Sandbox Code Playgroud)

我收到错误:Error 1 ERROR: 'make' failed.

我试过了 :

apt-get update
apt-get install build-essential
apt-get install libpcre3-dev 
apt-get install make
Run Code Online (Sandbox Code Playgroud)

所有这些都安装在最新版本上.

我正在使用php:7.0-apache图像运行容器.运行apachectl -V回报Apache/2.4.10 (Debian).

以下是我运行的命令的完整日志输出:https://pastebin.com/MYDY3xwU

php containers pecl docker sqlsrv

9
推荐指数
2
解决办法
7249
查看次数

无法从 Linux 上的 laravel 连接 azure sql server

我有一个连接 Azure 上的 sql server db 的 Laravel 应用程序。

在我的本地 Wamp 服务器上,该应用程序工作正常。我已经使用 docker 镜像安装在我的 linux 服务器上,并且没有连接 Azure DB。每次返回此错误消息:

SQLSTATE[HYT00]: [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (SQL: select * from [mytable])
Run Code Online (Sandbox Code Playgroud)

MSDOBC 驱动程序、sqlsrv 和 pdo_sqlsrv 已正确安装。

我想这与laravel有关,因为如果我用php脚本查询数据库就没有问题。

我的 .ENV 文件有 db 设置:

DB_CONNECTION=sqlsrv
DB_HOST=db.database.windows.net
DB_PORT=1433
DB_DATABASE=db_name
DB_USERNAME=db_user
DB_PASSWORD=pwd
Run Code Online (Sandbox Code Playgroud)

Laravel log 和 docker log 没什么有趣的,我不知道如何解决。

php sql-server laravel sqlsrv azure-sql-database

9
推荐指数
1
解决办法
642
查看次数

在Linux或其他支持UTF-8的驱动程序上安装SQLSRV驱动程序?

SQLSRV是PHP的唯一驱动程序,它能够将UTF-8字符串存储为双字节列(NVARCHAR而不是VARCHAR),这些列目前由Microsoft为PHP 5.2.X和5.3.X维护和支持.

我也得到了下载这些驱动程序的链接Linux SQLSRV驱动程序下载为Linux但我无法配置.

如果有人知道如何在linux上配置sqlsrv驱动程序或者有其他替代方法以UTF-8格式从SQL服务器检索数据,请分享.

php linux sql-server utf-8 sqlsrv

8
推荐指数
1
解决办法
3万
查看次数