如何调用MySQL函数并将返回值存储在PHP变量中?
我试过这样做:
$ret = mysqli_query($connection, "call FP_USER_EXISTS('$emailid')");
if ($ret==1)
{
echo "User already exists \n";
}
else
{
echo 'Inserted successfully';
}不幸的是,这没有提供我期望的布尔返回值。我希望它能够检索用户是否存在,但它返回的是mysqli_query的成功/失败状态。此类型查询的TRUE。
如何从实际的MySQL函数中获得返回代码?
发布于 2016-06-20 14:25:04
MySQLi存储过程文档为使用MySQLi调用存储过程提供了一些具体指导:
存储过程可以返回结果集。无法使用mysqli_query()正确地获取从存储过程返回的结果集。mysqli_query()函数将语句执行和获取第一个结果集组合为一个缓冲的结果集(如果有的话)。但是,还有一些对用户隐藏的存储过程结果集,这会导致mysqli_query()无法返回用户预期的结果集。 从存储过程返回的结果集使用mysqli_real_query()或mysqli_multi_query()获取。这两个函数都允许获取语句(如CALL )返回的任意数量的结果集。无法获取存储过程返回的所有结果集将导致错误。
考虑到这些信息,最好使用mysqli_real_query函数来检索所需的结果。使用以下代码:
$ret=mysqli_real_query($connection,"call FP_USER_EXISTS('$emailid')");
if($ret==1)
{
echo "Error: " . mysqli_error();
}
else
{
if ($row = mysqli_fetch_array($result)) {
if ($row[0]) {
echo 'Inserted successfully';
} else {
echo "User already exits";
}
} else {
echo "No result returned";
}
}此代码假设存储过程在插入新记录时返回TRUE,如果没有新记录返回FALSE。如果情况并非如此(因为问题中没有这些细节),您将不得不进行相应的调整。附加的错误处理用于确保语句本身已成功执行,并且至少返回了一个结果行。
https://stackoverflow.com/questions/37919612
复制相似问题