【问题标题】:Call PHP function with MySQLi and return TRUE OR FALSE使用 MySQLi 调用 PHP 函数并返回 TRUE 或 FALSE
【发布时间】:2018-12-29 10:32:18
【问题描述】:

我正在将 PHP 应用程序从 5.5 迁移到 7。 和 mysql_query 到 mysqli_query

其中一个函数用于代码块的授权: 但它不适用于 MySQLi_query。使用 mysql_query 函数可以正常工作。有人知道如何解决这个问题吗? TIA。

function IfMemberOfGroup($idgroup){    
$query = "SELECT user_id from member_of_group WHERE user_id = 
'".$_SESSION['user_id']."' AND id_group IN (".$idgroup.")";     

$result = mysqli_query($db,$query) or die();
while ($r = mysqli_fetch_array($result)) {
return true;
}
                                  }

使用功能:

if ((IfMemberOfGroup("2"))===true){
//do something
}

【问题讨论】:

  • $db 是连接名还是数据库名?应该是 mysqli_query($con, $query);
  • $db 是连接字符串。也可能是 $con。
  • 没听懂,既然 PHP 函数返回一次,那为什么还要在 while 循环中返回呢?
  • 好点。你会怎么做?
  • 但是 $result 总是(除了错误)是 mysqliResult 的对象,在循环中,确定是否返回了一些行

标签: php function mysqli


【解决方案1】:

你必须检查是否有记录,然后简单地返回member_of_group表中是否有这样的记录

function IfMemberOfGroup($idgroup)
{    
  global $db;

  $query = "SELECT EXISTS(SELECT 1 from member_of_group 
    WHERE user_id = '".$_SESSION['user_id']."' AND id_group IN (".$idgroup."))";     

  $result = mysqli_query($db,$query) or trigger_error(mysqli_error($db),E_USER_ERROR);
  $is_member = mysqli_fetch_row($result)[0];

  return (bool)$is_member;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 2016-04-16
    • 1970-01-01
    相关资源
    最近更新 更多