【问题标题】:How to Replace Integer Boolean Value With A String Value Inside Loop如何用循环内的字符串值替换整数布尔值
【发布时间】:2016-04-24 04:02:53
【问题描述】:

我刚刚为我的应用程序创建了一个 csv 导出功能,但我被困在一个我想实现的功能上。在我的数据库中,我的“活动”列的值为 0 或 1(显然 0 为假,1 为真)。当结果回来时,我想在生成我的 csv 时根据存储在数据库中的布尔数字将这些值替换为“活动”或“非活动”。下面的代码是我所拥有的。我再次成功导出了一个 csv,我只是不知道如何用字符串替换那些整数布尔值。

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=new.csv');

$output = fopen('php://output', 'w');
fputcsv($output, array('ID', 'active', 'role', 'firstname', 'lastname', 'email', 'username', 'datecreated'));
$results = mysqli_query($database->connection, "SELECT id, active, role, firstname, lastname, email, username, date_created FROM users");

while ($result = mysqli_fetch_assoc($results)):
 // I know I need to do something here to replace those values
 fputcsv($output, $result);
endwhile;

【问题讨论】:

    标签: php sql csv mysqli export-to-csv


    【解决方案1】:

    这是一个使用 if/else 的简单检查

    if($result['active'] == 1){ 
        $result['active'] = 'Active' 
    } else { 
        $result['active'] = 'Inactive' 
    }
    

    【讨论】:

      【解决方案2】:

      一个选项是在 MySQL 查询中应用这个逻辑,使用 IF 子句。

      SELECT id, IF(active = 1, 'Active', 'Inactive'), role, 
      firstname, lastname, email, username, date_created 
      FROM users
      

      将直接为您提供所需的内容,而无需遍历选择的结果并对其进行修改。

      【讨论】:

        【解决方案3】:

        试试这个:

        while ($result = mysqli_fetch_assoc($results)):
            $row = $result;
            $row['active'] = $row['active'] ? 'Active' : 'Inactive';
        
            fputcsv($output, $row);
        endwhile;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-07-01
          • 2019-03-07
          • 2011-02-17
          • 2012-04-02
          • 2021-02-23
          相关资源
          最近更新 更多