web-dev-qa-db-ja.com

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コードは何ですか?

33
Pheap

mysqliの代わりにmysqlを使用して解決策を見つけました。

<?php 

  //connect to database
  $connection = mysqli_connect("hostname", "user", "password", "db", "port");

  //run the store proc
  $result = mysqli_query($connection, 
     "CALL StoreProcName") or die("Query fail: " . mysqli_error());

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

?>

多くの人がmysql_connect, mysql_query and mysql_fetch_arrayの使用に問題があるようです。

49
Pheap

次の構文を使用して、ストアドプロシージャを呼び出すことができます。

$result = mysql_query('CALL getNodeChildren(2)');
13
phpadmin
<?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;
    }
2
Petah