
Gut
Ich habe eine gespeicherte Prozedur, die ich in MySQL erstellt habe, und möchte, dass PHP diese gespeicherte Prozedur aufruft. Was ist der beste Weg, dies zu tun?
-MySQL-Client-Version: 4.1.11
-MySQL Server-Version: 5.0.45
Hier ist meine gespeicherte Prozedur:
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 ;
Wie lautet der PHP-Code zum Aufrufen der Prozedur getTreeNodeName?

Gut
Ich habe jetzt eine Lösung gefunden, indem ich verwendet habe mysqli
anstatt mysql
.
<?php
// enable error reporting
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
//connect to database
$connection = mysqli_connect("hostname", "user", "password", "db", "port");
//run the store proc
$result = mysqli_query($connection, "CALL StoreProcName");
//loop the result set
while ($row = mysqli_fetch_array($result)){
echo $row[0] . " - " . + $row[1];
}
Ich habe festgestellt, dass viele Leute ein Problem mit der Verwendung haben mysql_connect, mysql_query and mysql_fetch_array
.

phpadmin
Sie können eine gespeicherte Prozedur mit der folgenden Syntax aufrufen:
$result = mysql_query('CALL getNodeChildren(2)');

Zahra
Das ist meine Lösung mit vorbereitete Erklärungen und die gespeicherte Prozedur gibt mehrere Zeilen zurück, nicht nur einen Wert.
<?php
require 'config.php';
header('Content-type:application/json');
$connection->set_charset('utf8');
$mIds = $_GET['ids'];
$stmt = $connection->prepare("CALL sp_takes_string_returns_table(?)");
$stmt->bind_param("s", $mIds);
$stmt->execute();
$result = $stmt->get_result();
$response = $result->fetch_all(MYSQLI_ASSOC);
echo json_encode($response);
$stmt->close();
$connection->close();

Petah
<?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;
}
10018600cookie-checkWie rufe ich eine gespeicherte MySQL-Prozedur aus PHP-Code heraus auf?yes
Exemplarische Vorgehensweise zum Erstellen einer gespeicherten MySQL-Prozedur: stackoverflow.com/a/20433501/445131
– Eric Leschinski
6. Dezember 2013 um 21:25 Uhr