当IF EXISTS评估为true时,SQL请求超时

时间:2016-10-07 10:10:28

标签: php sql sql-server odbc

我正在向我的数据库发送SQL查询。它会超时,如果它是真的,但如果它是假的,它会完美地运行。首先,SQL代码:

BEGIN TRY
    -- Insert statements for procedure here

    --Set error variables
    SELECT
    @ErrorPosition = 10,
    @CustomErrorMessage = 'Error 1';

    IF EXISTS(SELECT a.CustID 
    FROM Logins a 
    LEFT JOIN Addrs b ON a.CustID = b.CustID 
    WHERE a.User = @username AND b.EMail = @email) 
    BEGIN
        SELECT 'success' 
    END
    ELSE 
    BEGIN 
        SELECT 'failure' 
    END
END TRY

BEGIN CATCH
    EXECUTE dbo.LogError @ErrorModule, @ErrorPosition, @CustomErrorMessage
END CATCH

请注意,当我从SQL服务器手动运行它时,这实际上可以正常执行,无论是true还是false。

现在,评估FALSE(并且有效)的代码:

$sql = "EXEC Test @username='test_user',@email='wrong@example.com'";
$exec = odbc_exec($conn,$sql);

$result = odbc_result($exec,1);

echo $result;

此代码运行正常,输出失败' (正确的电子邮件是email@website.com)。 现在评估为TRUE的代码:

$sql = "EXEC Test @username='test_user',@email='email@website.com'";
$exec = odbc_exec($conn,$sql);

$result = odbc_result($exec,1);

echo $result;

这次超时。

PHP或SQL都不会记录任何错误。类似的IF EXISTS语句可以从PHP运行而没有错误。

0 个答案:

没有答案