首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何调用MySQL函数并使用PHP将返回值存储在变量中?

问如何调用MySQL函数并使用PHP将返回值存储在变量中?
EN

Stack Overflow用户
提问于 2016-06-20 10:00:49
回答 1查看 1.3K关注 0票数 0

如何调用MySQL函数并将返回值存储在PHP变量中?

我试过这样做:

代码语言:javascript
复制
$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函数中获得返回代码?

EN

回答 1

Stack Overflow用户

发布于 2016-06-20 14:25:04

MySQLi存储过程文档为使用MySQLi调用存储过程提供了一些具体指导:

存储过程可以返回结果集。无法使用mysqli_query()正确地获取从存储过程返回的结果集。mysqli_query()函数将语句执行和获取第一个结果集组合为一个缓冲的结果集(如果有的话)。但是,还有一些对用户隐藏的存储过程结果集,这会导致mysqli_query()无法返回用户预期的结果集。 从存储过程返回的结果集使用mysqli_real_query()或mysqli_multi_query()获取。这两个函数都允许获取语句(如CALL )返回的任意数量的结果集。无法获取存储过程返回的所有结果集将导致错误。

考虑到这些信息,最好使用mysqli_real_query函数来检索所需的结果。使用以下代码:

代码语言:javascript
复制
$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。如果情况并非如此(因为问题中没有这些细节),您将不得不进行相应的调整。附加的错误处理用于确保语句本身已成功执行,并且至少返回了一个结果行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37919612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档