SQL过程和到SQL server的PHP连接

SQL过程和到SQL server的PHP连接,php,sql,Php,Sql,我有一个网站,使用SQL数据库和一些程序不工作 我用一个新的数据库升级了我的数据库,程序不一样。我的旧数据库可以工作,但在我的新数据库上,一个过程不想执行 以下是错误 帐户窗格 警告:odbc_exec[function.odbc exec]:SQL错误:[Microsoft][odbc SQL Server驱动程序][SQL Server]过程或函数 'Website\u Login\u GetAccountData'需要参数'@i\u Password',该参数 未提供。中的SQLExecD

我有一个网站,使用SQL数据库和一些程序不工作

我用一个新的数据库升级了我的数据库,程序不一样。我的旧数据库可以工作,但在我的新数据库上,一个过程不想执行

以下是错误

帐户窗格

警告:odbc_exec[function.odbc exec]:SQL错误:[Microsoft][odbc SQL Server驱动程序][SQL Server]过程或函数 'Website\u Login\u GetAccountData'需要参数'@i\u Password',该参数 未提供。中的SQLExecDirect中的SQL状态为37000 第293行的C:\xampp\htdocs\Web\account.php

警告:odbc_结果要求参数1为resource,布尔值在第294行的C:\xampp\htdocs\Web\account.php中给出 帐户不存在

这是我在SQL server数据库中的过程:

USE [atum2_db_account]
GO

/****** Object:  StoredProcedure [dbo].[Website_Login_GetAccountData]    Script Date: 7/13/2016 1:14:22 AM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER OFF
GO



CREATE PROCEDURE [dbo].[Website_Login_GetAccountData]
    @i_AccountName          VARCHAR(20),
    @i_Password             VARCHAR(32)
AS
    DECLARE @AccountCount INT = (SELECT COUNT(td_Account.AccountUniqueNumber) FROM [atum2_db_account].[dbo].[td_Account] WHERE td_Account.AccountName = @i_AccountName)
    DECLARE @DoubleLogin int =(SELECT td_Account.ConnectingServerGroupID from [atum2_db_account].[dbo].[td_Account] WHERE td_Account.AccountName=@i_AccountName)
if(@DoubleLogin >0)
BEGIN
    SELECT 99 AS [AccountCount] -- Double login !
        RETURN
END
    IF(LEN(@i_Password) <> 32 OR LOWER(@i_Password) LIKE '%[^0-9a-f]%')
    BEGIN
        SELECT 4 AS [AccountCount] -- Wrong Password Lenght
        RETURN
    END

    DECLARE @CurrentPassword VARCHAR(32) = (SELECT td_Account.Password FROM [dbo].[td_Account] WHERE td_Account.AccountName = @i_AccountName)
    IF(@CurrentPassword IS NULL)
    BEGIN
        SELECT 6 AS [AccountCount] -- Invalid Accountname
        RETURN
    END

    IF(@CurrentPassword <> @i_Password)
    BEGIN
        SELECT 5 AS [AccountCount] -- Invalid Password
        RETURN
    END

    DECLARE @Date DATETIME =(SELECT TOP 1 td_BlockedAccounts.EndDate
    FROM [atum2_db_account].[dbo].[td_BlockedAccounts]
    WHERE td_BlockedAccounts.AccountName = @i_AccountName and td_BlockedAccounts.EndDate > GETDATE()
    ORDER BY td_BlockedAccounts.EndDate DESC)

    IF (@Date IS NOT NULL)
    BEGIN
        SELECT 3 AS [AccountCount]
        RETURN
    END

    ELSE IF (@AccountCount = 1)
    BEGIN
        SELECT @AccountCount AS [AccountCount], td_Account.AccountUniqueNumber, td_Account.AccountType, td_Account.WarPoint, td_Account.CashPoint, td_Account.VoteCount ,DATEADD(HOUR, 4, td_AccountVote.LastVote1) AS [NextVote1] ,DATEADD(HOUR, 4, td_AccountVote.LastVote2) AS [NextVote2] ,DATEADD(HOUR, 4, td_AccountVote.LastVote3) AS [NextVote3] ,DATEADD(HOUR, 4, td_AccountVote.LastVote4) AS [NextVote4] FROM [atum2_db_account].[dbo].[td_Account] LEFT OUTER JOIN [dbo].[td_AccountVote] ON [dbo].[td_Account].AccountName = [dbo].[td_AccountVote].AccountName WHERE [dbo].[td_Account].AccountName = @i_AccountName
        RETURN
    END

    ELSE IF(@AccountCount <> 0)
    BEGIN
        SELECT 2 AS [AccountCount]
        RETURN
    END

    ELSE
    BEGIN
        SELECT 0 AS [AccountCount]
        RETURN
    END



GO
这是PHP代码中出现错误的一行:

账户小组
存储过程需要两个参数:

CREATE PROCEDURE [dbo].[Website_Login_GetAccountData]
    @i_AccountName          VARCHAR(20),
    @i_Password             VARCHAR(32)
AS
    --...
但您提供了一个参数:

EXEC [atum2_db_account].[dbo].[Website_Login_GetAccountData] 'someLoginID'
因此出现了错误:

过程或函数“Website\u Login\u GetAccountData”需要参数“@i\u Password”,但未提供该参数

所以你有两个选择:

提供第二个参数;或 从存储过程中删除第二个参数,并相应地修改其内部逻辑 提供第二个参数会使EXEC查询看起来像这样:

EXEC [atum2_db_account].[dbo].[Website_Login_GetAccountData] @i_AccountName = 'someLoginID', @i_Password = 'somePassword'

步骤1:读取错误消息。第二步:确定你试图在哪里做错误消息声称你没有做的事情。对不起,我知道我写得很糟糕,但我不懂英语,我来这里是为了回答问题我已经准备好做你说的,但仍然说我出错了我试图修改SQL过程,但说我出错了怎么做?存储过程需要两个参数,而您需要提供一个参数。你到底尝试了什么?仍然说错误我怎么说我仍然是一个大人物我要做什么,但是在我的数据库上我没有时间,我必须向执行官详细解释你是如何解释的,但是php没有把这个过程与@i_密码联系起来,并说它不提供,但在我的SQL过程中,请详细说明它有多大问题我的PHP所以如果我发布所有的PHP文件以及它在文件u中写的内容,就会有一个包含文件,比如config_script.PHP,在那里一切正常。。我的服务器上的bicouse游戏我可以登录,所以程序正确,所以该怎么办我得到了新的DB对我来说是新的,所以该怎么办do@gabyvasile:更新的代码和错误消息是什么?编辑问题以反映更改。除非你真的提供问题的相关信息,否则我帮不了你。我相信我破坏了我的程序,我会重做我唯一要做的事情是如何用bicouse中的所有代码重新编码PhP文件。程序是正确的,我得到了saime eroor之类的,在我从mt程序中删除行之前,现在锁定,像这样,PhP之类的,还有eroor之类的请你修复我的php文件,我在那里添加了完整的php和我的程序,我不是上帝,在这个现实中,我不知道还能做什么,只是向你和其他人这样的专业人士寻求帮助,我仍然在为我的错误而学习。我来这里注册是为了得到你们的帮助请帮帮我