标签: sqlsrv

PHP 5.5.0 w/Microsoft SQL Server 2008 R2 - 没有sqlsrv_connect()?

我有以下环境:

  • Windows Server 2008 R2
  • IIS 7.5
  • Microsoft SQL Server 2008 R2

我想使用新的PHP 5.5.0版本,它可以很好地运行,但由于缺少当前的驱动程序,我无法连接到MSSQL服务器.

对于我之前的PHP 5.4.15版本,我使用了来自> here <的官方Microsoft驱动程序.

是否有可能从PHP 5.5.0连接?

php windows sql-server-2008 iis-7.5 sqlsrv

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

致命错误:在xampp中调用未定义的函数mssql_connect()或sqlsrv_connect()

我做了这里给出的所有更改,但我仍然没有在我的php 5.6版本上连接SQL服务器.

mssql_connect()sqlsrv_connect()两个都试过了.

我变了

; On windows: extension_dir = "ext"

至:

; On windows: extension_dir = "D:\xampp\php\ext"

我也安装了.dlls.但结果仍然是:

致命错误:调用未定义的函数sqlsrv_connect()

要么

致命错误:调用未定义的函数mssql_connect()

谁能帮我??

php sql-server sqlsrv

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

PHP-从sqlsrv数据库获取UTF-8数据

我正在尝试从sql server数据库中获取一些数据并在json中打印,但是数据库中的某些数据位于UTF-8(阿拉伯语)中。我在网上搜索并尝试了许多解决方案,但是没有一个对我有效,任何帮助都将受到欢迎。这是我的代码:

<?php

$serverName = "127.0.0.1"; //serverName\instanceName
$connectionInfo = array( "Database"=>"filmnak_com_", "CharacterSet" => "UTF-8", "UID"=>"filmnak", "PWD"=>"G5j^wk44");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

$sql = "SELECT CAST(ID AS INT) AS ID, CAST(Film AS TEXT) AS Film ,CAST(Name AS TEXT) Name FROM dbo.Movies";

$result = sqlsrv_query( $conn, $sql);
if( $result === false ) {
     die( print_r( sqlsrv_errors(), true));
}

    // looping through all results
    // products node
    $response["Info"] = array();
  while ($row = sqlsrv_fetch_array($result)) {
        // temp user array
        $Info = array();
        $Info["ID"] …
Run Code Online (Sandbox Code Playgroud)

php utf-8 sqlsrv

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

如何在使用 PHP SQLSRV_QUERY 时忽略 T-SQL 打印语句

我们正在将一些 PHP 5.3 内部 API 代码转换为 PHP 7.2。转换过程的一部分是从使用 mssql_* DB API 切换到使用 sqlsrv_* DB API。我们发现的一件事是,旧的 MSSQL_EXECUTE 语句会忽略存储过程中的任何 T-SQL Print 语句,但新的 SQLSRV_QUERY 语句不会。

例如,我有以下示例存储过程:

create procedure spTestPrintStmt
  @var1 varchar(50),
  @var2 varchar(50),
  @var3 varchar(50),
  @rtn1 varchar(50) out,
  @rtn2 varchar(50) out
as
begin

  print 'Starting spTestPrintStmt...';

  print 'Vars: ' + @var1 + ',' + @var2 + ',' + @var3;

  select @rtn1 = @var1, @rtn2 = @var2 + @var3;

  print 'Returned: ' + @rtn1 + ',' + @rtn2;

  return 0;
end;
go
Run Code Online (Sandbox Code Playgroud)

我使用以下 PHP …

php sql-server sqlsrv

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

PHP7.3 SQLSRV - 查询和存储时日期时间的格式不同

我们必须升级系统以使用 PHP7.3(从 MSSQL 更改为 SQLSRV DB Driver 和带有 PDO 的 SQLSRV)

我的问题是,我不理解这种行为以及如何正确解决它。

当我从数据库查询一DateTime列时,我得到:

2019-03-26 00:00:00.000
Run Code Online (Sandbox Code Playgroud)

当我尝试将相同的值存储到DateTime数据库的列中时,它不起作用。我的数据库接受这种格式,例如:

 26-03-2019 00:00:00.000
Run Code Online (Sandbox Code Playgroud)

因此,我们现有的数据库层无法正常工作。

我需要帮助来理解这种行为,以及如何告诉数据库使用相同的格式进行查询和插入/更新

我们使用的查询没有特殊的转换,简单的 SELECT / UPDATE / INSERT。

PHP 版本:PHP 7.3.3-1+ubuntu18.04.1+deb.sury.org+1 (cli)(构建时间:2019 年 3 月 7 日 20:31:49)(NTS)
版权所有 (c) 1997-2018 The PHP Group Zend Engine v3.3.3,版权所有 (c) 1998-2018 Zend Technologies 与 Zend OPcache v7.3.3-1+ubuntu18.04.1+deb.sury.org+1,版权所有 (c) 1999-2018,作者:Zend Technologies

SQL服务器:MSSQL服务器2014

谢谢任何提示

php sql-server sqlsrv

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

SQLSRV查询将输出参数作为奇怪文本返回

我在SQL Server 2012中有一个存储过程,它首先检查数据是否存在,如果存在,则将Output参数设置@Return为1并运行select查询,如果不存在,则设置@Return为0并返回不同的select查询.

在测试此存储过程以确保数据准确时,它是完美的并返回我期望的数据.问题在于PHP端在尝试读取它显示的输出参数??t_rrr时应该显示1或0.我相信问题可能在sqlsrv_query中的预定义常量中,但我似乎无法使其工作.这是我的代码:

PHP:

if(isset($_GET['accno'])) {

$search = $_GET['accno'];

$return = "";

$tsql_callSP = "EXEC Intranet.CustomerSearch @Search=?, @Return=?";
$params = array( 
    array($search, SQLSRV_PARAM_IN),
    array($return, SQLSRV_PARAM_OUT, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR),SQLSRV_SQLTYPE_INT),
    );

/* Execute the query. */
$stmt = sqlsrv_query( $conn, $tsql_callSP, $params);
if( $stmt === false )
{
    echo "EXEC Intranet.CustomerSearch Failed\n";
    die( print_r( sqlsrv_errors(), true));
}

while($res = sqlsrv_next_result($stmt))
{
    // make sure all result sets are stepped through, 
    // since the output params may not …
Run Code Online (Sandbox Code Playgroud)

php sql sql-server stored-procedures sqlsrv

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

从sqlsrv_query更改QueryTimeout

我遇到运行缓慢的查询问题,有时执行时间超过30秒,因此我希望增加sqlsrv_query超时.

Fatal error: Maximum execution time of 30 seconds exceeded
Run Code Online (Sandbox Code Playgroud)

我的PHP语法有问题,例如:http://php.net/manual/en/function.sqlsrv-query.php对我来说没有意义.

目前我的连接/设置如下:

$testServer = 'IP\servername,PORT';
$testDetails = array('Database' => 'DBNAME', 'UID' => 'USERNAME', 'PWD' => 'Password');
$testConnect = sqlsrv_connect($testServer, $testDetails);
Run Code Online (Sandbox Code Playgroud)

我的理解是我需要通过作为参数传递timout细节,sqlsrv_connect但我没有得到正确的语法.

(我已经尽可能地优化了查询,不幸的是,考虑到db表的设计,我无法在不到30秒的时间内始终如一地返回.)

php sql-server query-timeout sqlsrv

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

在 PHP 中使用 sqlsrv 防止 SQL 注入

我对整个 PHP/MSSQL 编码非常陌生,需要 SQL 注入预防方面的帮助。

我正在向使用 MSSQL 数据库的网站添加一个简单的搜索功能。该代码按照我想要的方式工作,但它很容易受到 SQL 注入的攻击。

除了准备语句之外,还有其他方法可以确保其安全吗?

我对存储过程也不太熟悉。

我尝试过准备语句,但没有运气(除非我做错了什么,这很可能)

我不熟悉的存储过程。

<?PHP

$tech = (isset($_POST['Technician'])? $_POST['Technician'] : null);

$sql = "SELECT * FROM Errors WHERE Error LIKE '%$tech%' or Description LIKE '%$tech%'";

$name = trim($_POST['Technician']);

if(empty($name)){
    print '<script type="text/javascript">alert("Please enter an Error Code or Error Description")</script>';
    exit;
}

$stmt = sqlsrv_query($conn, $sql);

if ($stmt) {
    $rows = sqlsrv_has_rows( $stmt );

    if ($rows === true) {
        echo "";
    } else{
        echo '<script type="text/javascript">alert("Please enter a valid Term")</script>';
    } …
Run Code Online (Sandbox Code Playgroud)

php sqlsrv

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

PHP 中 DATETIME 字段 MS-SQL 的问题

我在 MSSQL 中有以下查询:

SELECT DataFeed.AccountTranID, DataFeed.Datetime as MyDT
FROM admin_all.DataFeed
where cast(DataFeed.Datetime as Date) = cast(getdate() as Date)
Run Code Online (Sandbox Code Playgroud)

这给出了以下输出:

AccountTranID   MyDT
124552  2019-07-31 00:00:04.660
124553  2019-07-31 00:00:07.933
124554  2019-07-31 00:00:25.623
124555  2019-07-31 00:00:29.013
124556  2019-07-31 00:00:29.206
124557  2019-07-31 00:00:44.893
124558  2019-07-31 00:00:56.796
124559  2019-07-31 00:01:11.353
124560  2019-07-31 00:01:12.260
124561  2019-07-31 00:01:19.413
124562  2019-07-31 00:01:19.510
124563  2019-07-31 00:01:28.596
124564  2019-07-31 00:01:30.710
124565  2019-07-31 00:01:46.976
124566  2019-07-31 00:01:49.823
124567  2019-07-31 00:01:57.340
Run Code Online (Sandbox Code Playgroud)

尝试使用此 PHP 代码获取 MyDT 字段时,我无法获得输出(空白)。使用 AccountTranID,没问题。

这是 PHP 代码:

$tsql = …
Run Code Online (Sandbox Code Playgroud)

php sql-server sqlsrv

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

Docker PHP-FPM Alpine 与 SQLSRV 驱动程序错误

当我尝试连接到 sqlserver 数据库时出现此错误:

Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -49 [code] => -49 [2] => This extension 
requires the Microsoft ODBC Driver for SQL Server. Access the following URL to download the ODBC 
Driver for SQL Server for x64: https://go.microsoft.com/fwlink/?LinkId=163712 [message] => This 
extension requires the Microsoft ODBC Driver for SQL Server. Access the following URL to download the 
ODBC Driver for SQL Server for x64: https://go.microsoft.com/fwlink/?LinkId=163712 ) )
Run Code Online (Sandbox Code Playgroud)

我的 Dockerfile 如下: …

php docker sqlsrv

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