我正在调用一个存储过程,该过程通过PHP获取3个参数(1 IN,2 OUT)。我使用以下命令将以下字符串集"1,2,3,4"
从JavaScript传递给PHP:
xmlhttp.open("GET","gethint.php?q="+str,true);
xmlhttp.send();
从PHP我得到字符串并像这样调用它(在完成所有正确的SQL连接之后):
$q=$_GET["q"];
$result = mysql_query("CALL mst2($q, @eset, @leng)");
我得到的错误是Invalid query: Incorrect number of arguments for PROCEDURE fall12018.mst2; expected 3, got 6
如果我删除@eset和@leng我仍然得到错误但是用4而不是6,似乎该过程在每个逗号分隔成员中读取作为单独的输入,是否有人知道如何将整个集合发送为一个论点?
答案 0 :(得分:1)
现在看来你的电话看起来像这样(6个参数,由于$q
的值中的逗号):
$result = mysql_query("CALL mst2(1,2,3,4, @eset, @leng)");
尝试在引号中包含$ q。
$result = mysql_query("CALL mst2('{$q}', @eset, @leng)");
这将导致这个(3个参数):
$result = mysql_query("CALL mst2('1,2,3,4', @eset, @leng)");