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
//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
の使用に問題があるようです。
次の構文を使用して、ストアドプロシージャを呼び出すことができます。
$result = mysql_query('CALL getNodeChildren(2)');
<?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;
}