utilizarlos stored sentencias procedimientos procedimiento preparadas ejecutar desde almacenados almacenado php mysql stored-procedures mysqli user-defined-functions

stored - ¿Cómo llamar a un procedimiento almacenado de MySQL desde el código PHP?



procedures mysql php (6)

A continuación se muestra el código, cómo llamar al procedimiento de almacenamiento con el ejemplo

$con = mysql_connect(''localhost'',''root'',''''); mysql_select_db(''books''); //Call the proc() procedure follow $result= mysql_query("CALL proc();") or die(mysql_error()); while($row = mysql_fetch_row($result)) { for($i=0;$i<=6;$i++) { echo $row[$i]."<br>"; } } mysql_close($con);

He almacenado el procedimiento que creé en MySQL y quiero que PHP llame a ese procedimiento almacenado. ¿Cuál es la mejor manera de hacer esto?

-MisSQL cliente versión: 4.1.11
-MisSQL Server versión: 5.0.45

Aquí está mi procedimiento almacenado:

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 ;

¿Cuál es el código PHP para invocar el procedimiento getTreeNodeName?


Ahora encontré la solución usando mysqli lugar 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]; } ?>

Descubrí que muchas personas parecen tener un problema con el uso de mysql_connect, mysql_query and mysql_fetch_array .



Puede llamar a un procedimiento almacenado usando la siguiente sintaxis:

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


Tengo una solución de php.net

<?php $mysqli = new mysqli("localhost", "root", "", "joomla2.5"); if ($mysqli->connect_errno) { echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; } /*if (!$mysqli->query("DROP TABLE IF EXISTS test") || !$mysqli->query("CREATE TABLE test(id INT)") || !$mysqli->query("INSERT INTO test(id) VALUES (1), (2), (3)")) { echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error; } if (!$mysqli->query("DROP PROCEDURE IF EXISTS p") || !$mysqli->query(''CREATE PROCEDURE p() READS SQL DATA BEGIN SELECT id FROM test; SELECT id + 1 FROM test; END;'')) { echo "Stored procedure creation failed: (" . $mysqli->errno . ") " . $mysqli->error; } if (!$mysqli->multi_query("CALL p()")) { echo "CALL failed: (" . $mysqli->errno . ") " . $mysqli->error; } do { if ($res = $mysqli->store_result()) { printf("---/n"); var_dump($res->fetch_all()); $res->free(); } else { if ($mysqli->errno) { echo "Store failed: (" . $mysqli->errno . ") " . $mysqli->error; } } } while ($mysqli->more_results() && $mysqli->next_result());

?>


<?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; }