在php中使用'out'参数调用mysql函数或存储过程

时间:2012-09-30 04:28:34

标签: php mysql

我在php中使用过mysql存储过程,但是我需要从我的sql返回几个值,所以我打算使用mysql函数或存储过程和''out'参数。

如果有人可以帮助我,那将是件好事。

2 个答案:

答案 0 :(得分: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'];

答案 1 :(得分: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使用起来比输入参数稍微复杂一点,因为开发人员必须知道给定参数绑定时的大小。 如果该值大于其建议的大小,则会引发错误