首页 > 解决方案 > PHP - 执行 SQL 调用函数不起作用

问题描述

我是 PHP 新手,我不知道我在做什么。我正在尝试在我的 MSSQL 数据库中执行插入操作。不太确定为什么这不起作用。

function Register_WBG_Tester($Email, $FullName, $ChatHandle, $Product, $PreferedGenre, $PreviousTester, $AgeGroup, $PlayTime, $Discord, $NDA)
{
    sqlsrv_configure('WarningsReturnAsErrors',0);
    $query;
    $result;

    $query = (string)"
    DECLARE @Response AS BIT = 0;
    IF NOT EXISTS(SELECT Email FROM [dbo].[WBG_Tester] WHERE [Email] = $Email) BEGIN
    INSERT INTO [dbo].[WBG_Tester]
               ([Email]
               ,[Full_Name]
               ,[Chat_Handle]
               ,[Product]
               ,[Prefered_Genre]
               ,[Previous_Tester]
               ,[Age_Group]
               ,[Play_Time]
               ,[Discord]
               ,[NDA_Agreement])
         VALUES
               ($Email
               ,$FullName
               ,$ChatHandle
               ,$Product
               ,$PreferedGenre
               ,$PreviousTester
               ,$AgeGroup
               ,$PlayTime
               ,$Discord
               ,$NDA
               )

        SET @Response = 1
    END ELSE BEGIN
        SET @Response = 0
    END

    SELECT @Response"

    $result =(bool)mssql_query($query);

    return $result;        
}

我以前从未使用过 PHP,主要使用 .Net 我更喜欢 exec 调用存储过程而不是字符串查询。任何帮助都会很棒。我发现的一切都是针对 MySQL 的。似乎是 PHP 的首选。

标签: phpsqlfunction

解决方案


这是您可以在 php 中执行存储过程的方法

sqlsrv_prepare ( resource $conn , string $sql [, array $params [, array $options ]] ) : mixed

准备执行查询。此函数非常适合准备将使用不同参数值多次执行的查询。

$sql = "EXEC stp_Create_Item @Item_ID = ?, @Item_Name = ?";
$stmt = sqlsrv_prepare($conn, $sql, $procedure_params);
if (!sqlsrv_execute($stmt)) {
    echo "Your code is fail!";
    die;
}
while($row = sqlsrv_fetch_array($stmt)){
    //Stuff
}

更多详情请访问,php官方文档


推荐阅读