1

首先:我对google和stackoverflow进行了研究,但对我没有帮助。

我是初学者,所以请不要仅仅通过阅读标题并投票反对我来直接责备我。Stackoverflow 有时似乎非常激进:(

我正在尝试从 PHP 执行一个简单的存储过程。连接到数据库工作。

此代码还通过 SQL Server Management Studio 中的查询工作:

Execute SP_TPL_DeleteUser
@ExternalFieldID = 22

关于本手册:PHP 存储过程和 SQL ServerMSSQL 绑定

我构建了这行代码:

$id=22;
$stmt=mssql_init("SP_TPL_DeleteUser", $conn);
mssql_bind($stmt, "@ExternalFieldID", $ExternalFieldID, SQLVARCHAR, false, false, 255);
mssql_execute($stmt);
mssql_free_statement($stmt);

我的输出是:

( ! ) 致命错误:在第 32 行调用 C:\Users\kians_000\dev\traka\index.php 中未定义的函数 mssql_init()

当然,我尝试过玩耍,但没有任何效果:(我会感谢任何提示。

编辑:

我可以用这个连​​接到数据库:

$serverName = "KIAN-PC";
$connectionInfo = array( "Database"=>"T32Database");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn )
{
    echo "Connection established.\n";
}
else
{
    echo "Connection could not be established.\n";
    die( print_r( sqlsrv_errors(), true));
}

但是像这样的简单查询:

$version = mssql_query('SELECT *  FROM [T32Database].[dbo].[TUsers]');
$row = mssql_fetch_array($version);

echo $row[0];

产生这个输出:

致命错误:在第 42 行调用 C:\Users\kians_000\dev\traka\index.php 中的未定义函数 mssql_query()

phpinfo 给我看这个:

sqlsrv

启用 sqlsrv 支持

指令本地值主值
sqlsrv.ClientBufferMaxKBSize 10240 10240 sqlsrv.LogSeverity 0 0
sqlsrv.LogSubsystems 0 0 sqlsrv.WarningsReturnAsErrors On On

编辑3:我尝试了所有驱动程序。这是唯一有效的。也许我的消息来源有问题。

<?php

//-----------------------------------------------
// Connect to SQL Server DB
//-----------------------------------------------

$serverName = "KIAN-PC";
$connectionInfo = array( "Database"=>"T32Database");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn )
{
    echo "Connection established.\n";
}
else
{
    echo "Connection could not be established.\n";
    die( print_r( sqlsrv_errors(), true));
}

//-----------------------------------------------
// Perform operations with connection.
//-----------------------------------------------

$version = mssql_query('SELECT *  FROM [T32Database].[dbo].[TUsers]');
$row = mssql_fetch_array($version);

echo $row[0];

/* Close the connection. */
sqlsrv_close( $conn);

?>

我的输出是:

连接已建立。( ! ) 致命错误:在第 42 行调用 C:\Users\kians_000\dev\traka\index.php 中未定义的函数 mssql_query()

4

3 回答 3

2

而不是绑定尝试调用您的过程作为查询:

mssql_query('exec SP_TPL_DeleteUser @ExternalFieldID = ' . $ExternalFieldID, $con); 
于 2013-01-28T09:58:36.373 回答
1

我将两个不同的驱动程序混合在一起。

有 mssql 和 sqlsrv 驱动程序。检查语句是否以 mssql_ 或 sqlsrv_ 开头。我使用 MSSQL Express 2012,似乎无论如何都没有使用 mssql 驱动程序。

这现在可以工作了(作为一个你好世界):

<?php

//-----------------------------------------------
// Connect to MSSQL-DB
//-----------------------------------------------

$serverName = "KIAN-PC";
$connectionInfo = array( "Database"=>"T32Database");
$conn = sqlsrv_connect( $serverName, $connectionInfo);


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

//-----------------------------------------------
// Perform operations with connection.
//-----------------------------------------------

if( $client_info = sqlsrv_client_info( $conn)) {
    foreach( $client_info as $key => $value) {
        echo $key.": ".$value."<br />";
    }
} else {
    echo "Error in retrieving client info.<br />";
}

/* Close the connection. */
sqlsrv_close( $conn);

?>

无论如何,感谢大家的帮助!

于 2013-01-28T18:20:31.770 回答
0

如果您使用的是 WAMP,请确保已启用 mssql 模块。如果是,它将在上下文菜单中的名称旁边有一个复选标记。

于 2013-01-28T09:57:49.037 回答