web-dev-qa-db-fra.com

Comment appeler une procédure stockée MySQL depuis PHP code?

J'ai une procédure stockée que j'ai créée dans MySQL et je veux PHP pour appeler cette procédure stockée. Quelle est la meilleure façon de le faire?

-Version client MySQL: 4.1.11
- Version du serveur MySQL: 5.0.45

Voici ma procédure stockée:

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 ;

Quel est le code PHP pour appeler la procédure getTreeNodeName?

33
Pheap

J'ai maintenant trouvé une solution en utilisant mysqli au lieu de 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]; 
  }

?>

J'ai constaté que de nombreuses personnes semblent avoir un problème avec l'utilisation de mysql_connect, mysql_query and mysql_fetch_array.

49
Pheap

Vous pouvez appeler une procédure stockée à l'aide de la syntaxe suivante:

$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