mysqli调用存储过程问题

我这边遇到很奇怪的问题就是mysqli调用存储过程很简单,代码如下:

   $dbc->autocommit(false);
$result=$dbc->query("call test()");
$rows=$result->fetch_array();
mysqli_free_result($result);
$dbc->commit();

在存储过程里面是没有事务的,我用PHP控制事务,可是执行$dbc->commit()就出现这个错误ommands out of sync; you can't run this command now,这个是怎么回事?
问题补充:
但是这个代码已经很简单了,不知道那没同步阿
问题补充:
如果是自动提交可以呢?这能证明什么呢?关键是要在PHP里面控制事物!
问题补充:
$dbc->autocommit(false);  设置成true时可以!那不是事务没起到作用,除非把事务都在存储过程实现!
问题补充:
我加你的MSN了,麻烦回答一些疑问谢谢!

pdo中才真正提出事务概念(相当java中jdbc级别),
之前的处理方式根本就没有事务,执行一条语句是直接丢给数据库处理,怎么处理是数据库的问题。

好像是不同步数据

让它自动提交,试一下。

好久没有弄PHP 了,在PHP中
1.要么用原来的 function 的方式。
2.要么就用 PDO,纯面向对象的方式处理。

PDO 是以后的趋势,在PHP 6 中有可能从核心删除function的方式调用,将它移到pcel中。

在mysqli,pdo出来之前,php中根本就没有事务概念,它完全依赖数据库的行为。
pdo中事务方面也只和java中的 jdbc 事务等同,它现在依然没有jta等事务等同的概念。
在pdo中,你可以用try/catch方式来捕捉你的程序异常(PDOException)。

这是很久以前我在phpe.net发起的一个讨论。
[code="java"]http://club.phpe.net/index.php?act=ST&f=15&t=12734&s=e3da2ca7e448a92ce2ff3fec84e2d07c[/code]