无法使用php

时间:2017-02-06 16:51:08

标签: php sql-server

php和存储过程的代码加上错误也被提到了...... 我试过mysqli一个对我不起作用,绑定参数也不起作用请建议怎么做?

<?php

$serverName = "DESKTOP-FBUSVI6\RETAILAPP12"; //serverName\instanceName

// Since UID and PWD are not specified in the $connectionInfo array,
// The connection will be attempted using Windows Authentication.
$connectionInfo = array( "Database"=>"RetailLink");
$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));
}


$sql = "CALL [dbo].[sp_mRetailerRegInfo_Add] ('HUUSAUS','HAHShsg','v@gmail,com','923224024386')";
$stmt = sqlsrv_query( $conn, $sql);
if( $stmt == false ) {
die( print_r( sqlsrv_errors(), true));
}
else
{
echo "Record add successfully";
}
sqlsrv_close($conn);

?>
USE [RetailLink]
GO

/****** Object:  StoredProcedure [dbo].[sp_mRetailerRegInfo_Add]    Script Date: 2/5/2017 9:54:01 PM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


CREATE PROC [dbo].[sp_mRetailerRegInfo_Add] 

   @Name nvarchar(200),
   @ContactPerson nvarchar(200),
   @Email nvarchar(200),
   @ContactNo nvarchar(20),
   @RetailerCode nvarchar(20) output,
   @ErrorCode nvarchar(10) output


AS 
    SET NOCOUNT ON 
    SET XACT_ABORT ON

    declare @ActiveFlag char(1)
    declare @CreationDate datetime
    declare @LastUpdateBy int
    declare @LastUpdateDate datetime

    set @ActiveFlag = 'N'
    set @CreationDate = GetDate()
    set @LastUpdateDate = GetDate()
    set @LastUpdateBy = 0

    if @Name is Null
    begin
        set @ErrorCode = '-101' --Retail Name Blank
        return 
    end

    if @ContactPerson is Null  
    begin
        set @ErrorCode = '-102' --Contact Person Blank
        return 
    end

    if @Email is Null  
    begin
        set @ErrorCode = '-103' --Email Blank
        return
    end

    if @ContactNo is Null  
    begin
        set @ErrorCode = '-104' --Contact Number blank
        return
    end

    if exists (select NULL
                   from mRetailerRegInfo
                   where RetailerCode = @RetailerCode)
    begin
        set @ErrorCode = '-202' --Retailer Code exist! Please contact administrator!
        return
    end


    BEGIN TRAN

    set @RetailerCode = dbo.fGetRetailerCode()
    set @ErrorCode = NULL  --Registration Success

    INSERT INTO [dbo].[mRetailerRegInfo] ([RetailerCode], [Name], [ContactPerson], [Email], [ContactNo], [ActiveFlag], [CreationDate], [LastUpdateBy], [LastUpdateDate])
    SELECT @RetailerCode, @Name, @ContactPerson, @Email, @ContactNo, @ActiveFlag, @CreationDate, @LastUpdateBy, @LastUpdateDate

    ---- Begin Return Select <- do not remove
    --SELECT [RetailerID], [DistribID], [RetailerAccCode], [RetailerName], [Addr1], [Addr2], [Addr3], [PostalCode], [Email], [Phone], [Fax], [Mobile], [ContactFName], [ContactLName], [ContactTitle], [ActiveFlag], [Status], [CreationDate], [LastUpdateBy], [LastUpdateDate]
    --FROM   [dbo].[mRetailer]
    --WHERE  [RetailerID] = SCOPE_IDENTITY()
    --       AND [DistribID] = @DistribID
    --       AND [RetailerAccCode] = @RetailerAccCode
    ---- End Return Select <- do not remove

    COMMIT


GO



-------------------------------
Connection established.
Array ( [0] => Array ( [0] => 42000 [SQLSTATE] => 42000 [1] => 102 [code] => 102 [2] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Incorrect syntax near '.'. [message] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Incorrect syntax near '.'. ) )

1 个答案:

答案 0 :(得分:0)

使用EXEC并删除括号:

$sql = "EXEC [dbo].[sp_mRetailerRegInfo_Add] 'HUUSAUS','HAHShsg','v@gmail,com','923224024386'";
$stmt = sqlsrv_query( $conn, $sql);
if( $stmt == false ) {
die( print_r( sqlsrv_errors(), true));