コール手順は、右のMySQL端末にすべての作品sync`のうち `コマンドを引き起こしたが、PHPで、私の手順はgetSimilarityが関数であるMySQLのストアドプロシージャは
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
$$
あるCommands out of sync; you can't run this command nowCommands out of sync; you can't run this command now
を引き起こしました。 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;
}
は、私が今何をすべき?ありがとう!
ありがとうございます。私はこれをgoogledしましたが、それは役に立つとは思われません。 – Ovilia
私はmysqlオプティマイザがあなたのgetMostSimilar関数を再帰的なものとして解釈していると思っています。 – amelvin
残念ながら、MySQLはLIMIT句に変数を許可しないので、SELECTを実行するプロシージャを書き換えるだけでは機能しません – wonk0