PHP PDO MySQLの検索結果のキャスト

PHP PDO MySQLでセレクトした数値結果から判別するプログラムで、=== で厳密型チェックしてる場合、MySQLがTINYINTのフィールドを読み込む際、環境によって(Windows or Linux, PHP7 or PHP8)はうまく読み込めなくなったのでキャストしてみると解決しました。

< コード例 >

SQL

$SQL = <<<EOM
SELECT IS_MAILHTML
FROM m_user_aviation
WHERE 
  ID = :USERID     
EOM;

これはだめ

// パラメータセット //
  $stmt = $dbh->prepare($SQL);
  $stmt->bindvalue(':USERID', $userid, PDO::PARAM_STR);
  $stmt->execute();


  // 格納 //
  //$array = array();
  $mailtype= "";
  while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
   //var_dump ($row["IS_MAILHTML"]) ;
   $mailtype = $row["IS_MAILHTML"] === 1 ? "html" : "text";  
  }

これでオーケー

// パラメータセット //
  $stmt = $dbh->prepare($SQL);
  $stmt->bindvalue(':USERID', $userid, PDO::PARAM_STR);
  $stmt->execute();


  // 格納 //
  //$array = array();
  $mailtype= "";
  while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
   //var_dump ($row["IS_MAILHTML"]) ;
   $mailtype = (int)$row["IS_MAILHTML"] === 1 ? "html" : "text";   // 必ずintにキャスト
  }

Tabulator topCalc 集計行

 

 

 

Tabulatorで集計行を配置してみました。
カラム設定の公式ドキュメントはこちら
Column Calcuculationのドキュメントはこちら

< コード例 >

カラムのプロパティのtopCalcで合計、平均、件数とかをセットします。


// 飛行中数 //
  {
    title: "Active",
    field: "active_count",
    width: 40,
    hozAlign: "right",
    topCalc: "sum",
    formatter: function (cell, formatterParams, onRendered) {
      //console.log(cell.getValue())

      if (cell.getValue() <= 0) {
        return ""
      }
      else {
        return cell.getValue()
      }
    }
  },
  {field: "id", visible: false}
]

< 画面例 >

件数列と合計列を上に配置