从php执行一个简单的SQL Server存储过程

时间:2013-01-28 09:46:19

标签: php sql-server

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

我是初学者,所以请不要直接因为阅读标题并投票给我而责怪我。 Stackoverflow有时似乎非常积极:(

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

此代码也适用于SQL Server Management Studio中的查询:

Execute SP_TPL_DeleteUser
@ExternalFieldID = 22

关于本手册:PHP Stored Procedures and SQL ServerMSSQL Bind

我构建了这行代码:

$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);

我的输出是:

  

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

当然我试过玩,但没有任何作用:( 我会感谢任何提示。

编辑:

我可以用这个连​​接到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));
}

但是像这样的简单查询:

$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()

3 个答案:

答案 0 :(得分:2)

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

mssql_query('exec SP_TPL_DeleteUser @ExternalFieldID = ' . $ExternalFieldID, $con); 

答案 1 :(得分: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);

?>

感谢大家的帮助!

答案 2 :(得分:0)

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