문제:
LAST_INSERT_ID() 값을 검색하는 방법 PHP 및 PDO를 사용하여 MySQL 저장 프로시저에서?
프로시저:
다음 PHP 코드를 고려하세요.
<?php $stmt = $db->prepare("CALL simpleProcedure(:name,:returnid)"); $stmt->bindValue(':name', $name, PDO::PARAM_STR); $stmt->bindParam(':returnid', $returnid, PDO::PARAM_INT, 11); $stmt->execute(); echo $returnid; ?>
이 코드는 겉보기에는 맞습니다. PDO의 오랜 버그로 인해 작동하지 않습니다.
해결책:
MySQL 프로시저에서 출력을 검색하려면 다음 단계를 따르세요.
1단계: 프로시저 실행
입력을 사용하여 프로시저를 실행하고 결과를 저장할 MySQL 변수를 지정합니다. 예:
<?php $stmt = $db->prepare("CALL simpleProcedure(:name, @returnid)"); $stmt->bindValue(':name', $name, PDO::PARAM_STR); $stmt->execute(); ?>
2단계: MySQL 변수 쿼리
별도의 쿼리를 실행하여 MySQL 변수를 선택합니다.
<?php $stmt = $db->query("SELECT @returnid"); $result = $stmt->fetchAll(PDO::FETCH_COLUMN, 0); $returnid = $result[0]; ?>
예:
다음 코드에는 다양한 매개변수 유형(IN, INOUT, OUT)에 대한 변수 사용을 보여주는 보다 자세한 예가 포함되어 있습니다.
SQL 프로시저 :
CREATE PROCEDURE `demoSpInOutSqlVars`( IN pInput_Param INT, /* --- */ INOUT pInOut_Param INT, OUT pOut_Param INT) BEGIN /* * Pass the full names of SQL User Variable for these parameters. e.g. '@varInOutParam' * These 'SQL user variables names' are the variables that Mysql will use for: * 1) finding values * 2) storing results * * It is similar to 'variable variables' in PHP. */ SET pInOut_Param := ABS(pInput_Param) + ABS(pInOut_Param); SET pOut_Param := ABS(pInput_Param) * -3; END$$
PHP 코드:
<?php // Bind PHP variables $phpInParam = 5; $phpInOutParam = 404; $phpOutParam = null; // Prepare the SQL procedure call $sql = "call demoSpInOut(:phpInParam, @varInOutParam, @varOutParam)"; $stmt = $db->prepare($sql); $stmt->bindParam(':phpInParam', $phpInParam, PDO::PARAM_INT); // Set the SQL User INOUT variables $db->exec("SET @varInOutParam = $phpInOutParam"); // Execute the procedure $stmt->execute(); // Get the SQL variables into PHP variables $sql = "SELECT @varInOutParam AS phpInOutParam, @varOutParam AS phpOutParam FROM dual"; $results = $db->query($sql)->fetchAll(PDO::FETCH_ASSOC); $phpInOutParam = $results[0]['phpInOutParam']; $phpOutParam = $results[0]['phpOutParam']; // Display the PHP variables echo "phpInParam: $phpInParam<br>"; echo "phpInOutParam: $phpInOutParam<br>"; echo "phpOutParam: $phpOutParam<br>"; ?>
이 단계를 따르면 PDO를 사용하여 MySQL 저장 프로시저의 출력을 효과적으로 검색할 수 있습니다.
위 내용은 PHP에서 PDO를 사용하여 MySQL 저장 프로시저에서 출력을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!