我有一些工作的 php/mysql,我现在正在迁移到存储过程。
一旦调用任何存储过程,后续的 CALL 和 SELECT 就会失败,并显示“命令不同步;您现在无法运行此命令”。
不是 SELECT 的现有存储过程可以正常工作。
function db_all ($query)
{
log_sql_read ($query);
$result = mysql_query ($query, db_connection ());
if (!$result)
{
log_sql_error ($query);
return Array ();
}
$rows = Array ();
while ($row = mysql_fetch_assoc ($result))
array_push ($rows, $row);
mysql_free_result ($result);
return $rows;
}
db_all ("SELECT 1 as `test`");
db_all ("SELECT 2 as `test`");
db_all ("CALL `$db`.`select_info`($id);"); // RETURNS CORRECT DATA
db_all ("CALL `$db`.`select_info`($id);"); // ERROR HERE
db_all ("SELECT 5 as `test`"); // ERROR HERE
由于未调用mysql_free_result
,此错误在其他地方进行了解释,但我确实调用了它。那么有什么问题呢?
我看到了一些引用 mysqli 的解决方案。我现在需要一个非 mysqli解决方案。