PHP 오류 및 저장 프로 시저가있는 sqlsrv_execute 오류

MyLifeAsBK

인라인 SQL 사용에서 저장 프로 시저 사용으로 데이터를 마이그레이션하는 중입니다. 내 코드를 실행할 때 걸림돌이되고 아래와 같은 오류가 발생합니다.

경고 : sqlsrv_execute ()는 매개 변수 1이 자원이 될 것으로 예상합니다. 285 행의 ajax_functions1.live.php에 제공된 bool입니다.

경고 : sqlsrv_fetch_array ()는 매개 변수 1이 자원이 될 것으로 예상합니다. 296 행의 ajax_functions1.live.php에 제공된 bool

다음은 코드의 일부입니다.

function db_add_user($email, $provider, $subuid,$data){
   include 'config.php';
   $email = $data['preferred_username'];
 
    $params = array(
        array(&$myparams['email'], SQLSRV_PARAM_IN),
        array(&$myparams['provider'], SQLSRV_PARAM_IN)
    );

    $sql = "{EXEC [dbo].[getSubUniqueID_HPCreate] @email = ?, @provider = ?}";
    $stmt = sqlsrv_prepare($conn, $sql, $params);
    sqlsrv_execute($stmt);

 $uid=null;

if($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC) > 0) {
    $uid = $row[0]['sub_unique_id'];
}else{
            $params = array(
                array(&$myparams['email'], SQLSRV_PARAM_IN),
                array(&$myparams['provider'], SQLSRV_PARAM_IN),
                array(&$myparams['subuid'], SQLSRV_PARAM_IN)
            );
                    
            $sql = "{EXEC [dbo].[insertSubUniqueID_HPCreate] @email = ?, @provider = ?, @subuid = ?}";
            $stmt = sqlsrv_prepare($conn, $sql, $params);
            sqlsrv_execute($stmt);

        }
return $uid;

}

여기에 SP가 있습니다. dbo.getSubUniqueID_HPCreate

USE [homepages_config]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[getSubUniqueID_HPCreate]
    @email nvarchar(256),
    @provider nvarchar(64)
AS
BEGIN
    SET NOCOUNT ON;
    SELECT sub_unique_id FROM homepages_config.dbo.users_providers
    WHERE email = @email AND provider_id = @provider;

END

여기에 SP가 있습니다. dbo.insertSubUniqueID_HPCreate

USE [homepages_config]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[insertSubUniqueID_HPCreate]
    @email nvarchar(256),
    @provider nvarchar(256),
    @subuid nvarchar(1024)
AS
BEGIN
    SET NOCOUNT ON;
    INSERT INTO homepages_config.dbo.users_providers ([email], [provider_id], [sub_unique_id])
    VALUES (LOWER(@email), @provider, @subuid)

END

어떤 도움이라도 대단히 감사하겠습니다.

Zhorov

첫째, 저장 프로 시저가 정확합니다. 한 가지 문제는 @provider매개 변수 ( @provider nvarchar(64)@provider nvarchar(256))에 대한 다른 선언 이지만 입력 오류 일 수 있습니다.

따라서 스크립트를 약간 변경해야한다고 생각합니다.

  • {call sp_name (?, ...)}구문을 사용 하여 저장 프로 시저를 실행 합니다. 이것은 경고 의 가능한 이유입니다 : sqlsrv_execute ()는 매개 변수 1이 리소스 일 것으로 예상하고, 라인에서 ajax_functions1.live.php에 주어진 bool ... 오류, 함수 sqlsrv_prepare()가 올바르게 실행되지 않았고이 실행의 결과를 확인해야하기 때문입니다. . 참고, 당신이 사용할 수 있음 sqlsrv_query(),이 기능은 모두 문 준비와 문 실행을 수행하고, 매개 변수화 된 쿼리를 실행하는 데 사용할 수 있기 때문이다.
  • db_add_user()함수에 대한 매개 변수 선언을 변경하십시오 .
  • 항상 오류를 확인하십시오.
  • 의 결과 sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)는 연관 배열이므로 $row[0]['sub_unique_id']오류입니다.

다음 스크립트 (코드 기반)는 문제에 대한 가능한 해결책입니다.

<?php
function db_add_user($email, $provider, $subuid){
    include 'config.php';

    $params = array(
        array($email, SQLSRV_PARAM_IN),
        array($provider, SQLSRV_PARAM_IN)
    );

    $uid = null;

    $sql = "{call [dbo].[getSubUniqueID_HPCreate]( ?, ? )}"
    $stmt = sqlsrv_query($conn, $sql, $params);
    if ($stmt === false) {
        echo print_r(sqlsrv_errors(), true);
        return null;
    }   

    if ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
        $uid = $row['sub_unique_id'];
    } else {
        $params = array(
            array($email, SQLSRV_PARAM_IN),
            array($provider, SQLSRV_PARAM_IN),
            array($subid SQLSRV_PARAM_IN)
        );
        $sql = "{call [dbo].[insertSubUniqueID_HPCreate]( ?, ?, ? )}"
        $stmt = sqlsrv_query($conn, $sql, $params);
        if ($stmt === false) {
            echo print_r(sqlsrv_errors(), true);
            return null;
        }   
    }

    return $uid;
}
?>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

IF ... THEN ... END IF가있는 MySQL 저장 프로 시저 오류; 명세서

분류에서Dev

저장 프로 시저 및 함수 변경시 오류

분류에서Dev

저장 프로 시저-변수 선언 및 유형 오류

분류에서Dev

ORACLE PL / SQL 저장 프로 시저 삽입 및 실행 오류

분류에서Dev

exec에서 저장 프로 시저 및 오류 생성

분류에서Dev

TransformedTargetRegressor 저장 및로드 오류

분류에서Dev

저장 프로 시저 구문 오류

분류에서Dev

mysql 저장 프로 시저의 오류

분류에서Dev

저장 프로 시저 오류 concat ()

분류에서Dev

저장 프로 시저 InvalidCastException 오류

분류에서Dev

저장 프로 시저 오류

분류에서Dev

저장 프로 시저의 오류 1064

분류에서Dev

저장 프로 시저-오류 # 1064

분류에서Dev

SQL 저장 프로 시저의 오류

분류에서Dev

MySQL 저장 프로 시저 오류 1418

분류에서Dev

오류가 있어도 저장 프로 시저 실행 유지

분류에서Dev

mysql 오류 (# 1064) 저장 프로 시저 생성 오류

분류에서Dev

mysql 오류 (# 1064) 저장 프로 시저 생성 오류

분류에서Dev

PHP에서 mysql 저장 프로 시저를 호출 할 때 오류 발생

분류에서Dev

저장 프로 시저가있는 PHP 및 Mysqli

분류에서Dev

로컬 저장소 오류

분류에서Dev

sqlsrv_fetch_array ()는 매개 변수 1을 예상합니다. 저장 프로 시저 사용 오류

분류에서Dev

선택 오류 1064를 사용하는 저장 프로 시저

분류에서Dev

저장 프로 시저를 만드는 MySQL 구문 오류

분류에서Dev

저장 프로 시저를 만드는 동안 MySQL 오류 # 1064

분류에서Dev

이 저장 프로 시저의 오류는 무엇입니까

분류에서Dev

MYSQL의 중첩 저장 프로 시저에 오류가 있습니다.

분류에서Dev

Select 명령 및 변수를 사용하여 오류를 제공하는 Oracle의 저장 프로 시저

분류에서Dev

커서가 오류를 제공하는 MySQL 저장 프로 시저

Related 관련 기사

  1. 1

    IF ... THEN ... END IF가있는 MySQL 저장 프로 시저 오류; 명세서

  2. 2

    저장 프로 시저 및 함수 변경시 오류

  3. 3

    저장 프로 시저-변수 선언 및 유형 오류

  4. 4

    ORACLE PL / SQL 저장 프로 시저 삽입 및 실행 오류

  5. 5

    exec에서 저장 프로 시저 및 오류 생성

  6. 6

    TransformedTargetRegressor 저장 및로드 오류

  7. 7

    저장 프로 시저 구문 오류

  8. 8

    mysql 저장 프로 시저의 오류

  9. 9

    저장 프로 시저 오류 concat ()

  10. 10

    저장 프로 시저 InvalidCastException 오류

  11. 11

    저장 프로 시저 오류

  12. 12

    저장 프로 시저의 오류 1064

  13. 13

    저장 프로 시저-오류 # 1064

  14. 14

    SQL 저장 프로 시저의 오류

  15. 15

    MySQL 저장 프로 시저 오류 1418

  16. 16

    오류가 있어도 저장 프로 시저 실행 유지

  17. 17

    mysql 오류 (# 1064) 저장 프로 시저 생성 오류

  18. 18

    mysql 오류 (# 1064) 저장 프로 시저 생성 오류

  19. 19

    PHP에서 mysql 저장 프로 시저를 호출 할 때 오류 발생

  20. 20

    저장 프로 시저가있는 PHP 및 Mysqli

  21. 21

    로컬 저장소 오류

  22. 22

    sqlsrv_fetch_array ()는 매개 변수 1을 예상합니다. 저장 프로 시저 사용 오류

  23. 23

    선택 오류 1064를 사용하는 저장 프로 시저

  24. 24

    저장 프로 시저를 만드는 MySQL 구문 오류

  25. 25

    저장 프로 시저를 만드는 동안 MySQL 오류 # 1064

  26. 26

    이 저장 프로 시저의 오류는 무엇입니까

  27. 27

    MYSQL의 중첩 저장 프로 시저에 오류가 있습니다.

  28. 28

    Select 명령 및 변수를 사용하여 오류를 제공하는 Oracle의 저장 프로 시저

  29. 29

    커서가 오류를 제공하는 MySQL 저장 프로 시저

뜨겁다태그

보관