3

私はphpでmysqlストアドプロシージャを使用しましたが、sqlからいくつかの値を返す必要があるため、mysql関数または''out'パラメータを使用したスト​​アドプロシージャを使用することを計画しています。

誰かがそれについて私を助けることができればそれは良いでしょう。

4

2 に答える 2

1

私はこれに対する解決策を見つけました

http://blog.ulf-wendel.de/2011/using-mysql-stored-procedures-with-php-mysqli/

  $mysqli = new mysqli("localhost", "root", "", "test");
if (!$mysqli->query("DROP PROCEDURE IF EXISTS p") ||
    !$mysqli->query('CREATE PROCEDURE p(OUT msg VARCHAR(50)) BEGIN SELECT "Hi!" INTO msg; END;'))
   echo "Stored procedure creation failed: (" . $mysqli->errno . ") " . $mysqli->error;

if (!$mysqli->query("SET @msg = ''") ||
    !$mysqli->query("CALL p(@msg)"))
 echo "CALL failed: (" . $mysqli->errno . ") " . $mysqli->error;

if (!($res = $mysqli->query("SELECT @msg as _p_out")))
 echo "Fetch failed: (" . $mysqli->errno . ") " . $mysqli->error;

$row = $res->fetch_assoc();
echo $row['_p_out'];
于 2012-10-03T04:19:13.070 に答える
0

PHP拡張機能を使用している場合はPDO、以下のコードを試してください

<?php
    $stmt = $dbh->prepare("CALL sp_returns_string(?)");
    // assumes that the output is VARCHAR(100) 
    $stmt->bindParam(1, $return_value, PDO::PARAM_STR, 100); 
    // call the stored procedure
    $stmt->execute();

    print "procedure returned $return_value\n";
?>

Output parameters開発者は、特定のパラメーターをバインドするときにそのパラメーターの大きさを知る必要があるという点で、入力パラメーターよりも使用が少し複雑です。値が提案されたサイズよりも大きいことが判明した場合、エラーが発生します。

于 2012-09-30T04:32:46.880 に答える