調用程序工作的很好的MySQL中端,但在PHP,造成Commands out of sync; you can't run this command nowCommands out of sync; you can't run this command now
MySQL的存儲過程引起的`命令了sync`的
我的程序是
delimiter $$
create procedure getMostSimilar (IN vU_ID INT, IN voffset INT, IN vsize INT)
BEGIN
set @offset = voffset;
set @size = vsize;
set @uid = vU_ID;
prepare SimilarStmt from
"SELECT U_ID, getSimilarity(U_ID, ?) AS similar FROM Answer WHERE U_ID != ? GROUP BY U_ID ORDER BY similar DESC LIMIT ?, ?";
execute SimilarStmt using @uid, @uid, @offset, @size;
deallocate prepare SimilarStmt;
END
$$
其中getSimilarity是一個函數。
在PHP:
function getMostSimilar($U_ID, $offset, $size){
$query = sprintf("CALL getMostSimilar(%s, %s, %s)",
$U_ID, $offset, $size);
$result = mysql_query($query);
print mysql_error();
if (!$result){
return $query;
}
$ans = array();
$len = 0;
while($row = mysql_fetch_assoc($result)){
$ans[$len] = $row;
$len++;
}
return $ans;
}
我現在應該怎麼辦?謝謝!
謝謝你。我已經使用了這個,但它似乎沒有幫助。 – Ovilia
我認爲mysql優化器正在將您的getMostSimilar函數解釋爲遞歸函數,並希望您在執行任何操作之前釋放,使用或存儲數據返回值。 – amelvin
不幸的是,MySQL不允許在LIMIT子句中使用變量,因此只需重寫該過程來執行SELECT操作將不起作用 – wonk0