Как вызвать хранимую процедуру MySQL из PHP-кода?

Я хранил процедуру, которую я создал в 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 ; 

Что такое PHP-код для вызова процедуры getTreeNodeName?

Related of "Как вызвать хранимую процедуру MySQL из 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; } 

См. « Вызовите хранимую процедуру из PHP из списка подсказок Artful MySQL для вызова хранимой процедуры»

Официальные документы PHP также обеспечивают направление

После показа кода, как вызвать процедуру хранилища с примером

 $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); 

Я получил решение от 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()); 

?>