programing

PHP 코드 내에서 MySQL 저장 프로시저를 어떻게 호출합니까?

goodsources 2023. 9. 3. 16:15
반응형

PHP 코드 내에서 MySQL 저장 프로시저를 어떻게 호출합니까?

MySQL에 작성한 저장 프로시저를 가지고 있으며 PHP에서 해당 저장 프로시저를 호출하기를 원합니다.이것을 하는 가장 좋은 방법은 무엇입니까?

-MySQL 클라이언트 버전: 4.1.11
-MySQL Server 버전: 5.0.45

저장 절차는 다음과 같습니다.

DELIMITER $$

DROP FUNCTION IF EXISTS `getNodeName` $$
CREATE FUNCTION `getTreeNodeName`(`nid` int) RETURNS varchar(25) CHARSET utf8
BEGIN
 DECLARE nodeName varchar(25);
 SELECT name into nodeName FROM tree
 WHERE id = nid;
 RETURN nodeName;
END $$

DELIMITER ;

getTreeNodeName 절차를 호출하는 PHP 코드는 무엇입니까?

이제 사용하여 솔루션을 찾았습니다.mysqli대신에mysql.

<?php 

// enable error reporting
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
//connect to database
$connection = mysqli_connect("hostname", "user", "password", "db", "port");

//run the store proc
$result = mysqli_query($connection, "CALL StoreProcName");

//loop the result set
while ($row = mysqli_fetch_array($result)){     
  echo $row[0] . " - " . + $row[1]; 
}

저는 많은 사람들이 사용하는 것에 문제가 있는 것처럼 보인다는 것을 발견했습니다.mysql_connect, mysql_query and mysql_fetch_array.

다음 구문을 사용하여 저장 프로시저를 호출할 수 있습니다.

$result = mysql_query('CALL getNodeChildren(2)');

이것은 준비된 문과 저장 프로시저가 하나의 값이 아닌 여러 행을 반환하는 솔루션입니다.

<?php

require 'config.php';
header('Content-type:application/json');
$connection->set_charset('utf8');

$mIds = $_GET['ids'];

$stmt = $connection->prepare("CALL sp_takes_string_returns_table(?)");
$stmt->bind_param("s", $mIds);

$stmt->execute();

$result = $stmt->get_result();
$response = $result->fetch_all(MYSQLI_ASSOC);
echo json_encode($response);

$stmt->close();
$connection->close();
<?php
    $res = mysql_query('SELECT getTreeNodeName(1) AS result');
    if ($res === false) {
        echo mysql_errno().': '.mysql_error();
    }
    while ($obj = mysql_fetch_object($res)) {
        echo $obj->result;
    }

언급URL : https://stackoverflow.com/questions/3966747/how-to-call-a-mysql-stored-procedure-from-within-php-code

반응형