我想使用 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。
有人知道我应该对我的代码做什么才能使其正常工作吗?
最佳答案
也许切换到 MySQLi 并使用 multi-query()
MySQLi 为您提供准备好的语句的额外好处,并且是为支持 OOP 而构建的。
关于php - 在 PHP 中多次调用 MySQL 存储例程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9512831/