在PHP中多次调用MySQL存储的例程

时间:2012-03-01 08:24:55

标签: php mysql stored-procedures

我想用PHP调用多个 MySQL存储例程顺序,但我只能成功调用一个一个 - 之后我收到错误命令不同步;你现在不能运行这个命令。研究这个问题我发现这是一个常见的问题(由于在下一个调用之前没有“完成”之前的调用),但我没有找到可以应用于我的代码的解决方案:

for ($i=0; $i<10; $i+=1) 
{
    if (!($conn=getconn() && ($result=mysql_query("call MyStoredRoutine();", $conn))))
    {
        $errorMessage = mysql_error($conn); // Error 2nd time here...
    }
    else {
        while ($row=mysql_fetch_array($result)) {
            // Retrieve data here...
        }
    }
}

getconn()的实施(我不认为这是相关的,但你永远不知道):

function getconn() {
    global $custdb, $custdb_connection, $dbuser, $dbpass;
    if (! $custdb_connection) {
        if (! ($custdb_connection = mysql_connect("localhost", $dbuser, $dbpass, true))) return false;
        if (! (@ mysql_select_db($custdb, $custdb_connection)))  return false;
    }
    return $custdb_connection;
}

PHP版本是 5.3.8-1~dotdeb.1 ,MySQL是 5.1.54-1ubuntu4

任何人都知道我应该对我的代码做些什么来使它工作?

1 个答案:

答案 0 :(得分:1)

也许切换到MySQLi并使用multi-query()

MySQLi为您提供了预准备语句的额外好处,并且构建为支持OOP。