我一直试图使用mysql不成功运行我的存储过程很长一段时间。每当我使用下面的代码时
$link_id = DbConnection::getInstance('mycon')->connectMysql();
$table_count = mysql_query("SELECT TABLE_NAME FROM information_schema.tables WHERE table_schema = 'mycon' AND table_name LIKE 'table_%' ")
while($row = mysql_fetch_array($table_count)){
$table = $row["TABLE_NAME"];
$excute = mysql_query("dummy_2('$table')") or die(mysql_error());
$result = mysql_fetch_assoc($excute);
var_dump($result);
}
它出错了
Commands out of sync; you can't run this command now
所以当我搜索互联网时,它说我需要使用MYSQL PDO .. 因此,任何人都可以将我的上述语句转换为mysql pdo ..因为我对PDO没有任何线索
答案 0 :(得分:3)
当您从MySQL数据库查询某些内容时,结果将显示为结果集。实际上,某些查询可能会关联多个结果集。但是每个连接只能有一个活动的结果集列表。即您,您的脚本必须以某种方式关闭所有当前活动的结果集,然后才能发出另一个查询 如果是你的存储函数使用多个SELECT函数有多个结果集,你必须迭代/关闭/删除它们。
http://dev.mysql.com/doc/refman/5.1/en/stored-routines-syntax.html:
MySQL支持一个非常有用的扩展,它允许在存储过程中使用常规SELECT语句(即,不使用游标或局部变量)。这种查询的结果集只是直接发送给客户端。多个SELECT语句生成多个结果集,因此客户端必须使用支持多个结果集的MySQL客户端库。
旧的,已弃用的 mysql_ *函数不支持多个结果集 - 您只是不能迭代/删除它们。
mysql i _ *扩展程序确实:请参阅http://docs.php.net/mysqli.next-result
PDO也是如此:见http://docs.php.net/pdostatement.nextrowset.php