【PHP】データベースから数字カラム名の取得方法について

前回、WordPressでデータベースにテーブルを追加する方法を紹介しました。

あわせて読みたい
【WordPress】データベースでテーブルを追加して使う
【WordPress】データベースでテーブルを追加して使うとても便利なCMS[コンテンツ・マネジメント・システム]の1つ「WordPress」。プラグインを使えば大抵の事が実現できてしまう優れものです。しかし、時にはもっとカスタマ...

その過程で、PHPを使ってデータベースのテーブルからデータを取得する方法を記載しました。

この過程で私自身、少々つまづいた事がありました。

それは、カラム名の先頭に数字が使われていた場合、エラーが発生してしまう事です。

WordPressで使う場合「global $wpdb」のオブジェクトでSQLを実行し、テーブルの値を取得しました。

// wpdbオブジェクトを生成
global $wpdb;

今回は、WordPressよりもより幅広く使われている「PDO」を例に、エラーが無く取得する記述をご紹介します

まずはデータベースに接続するプログラムの例を紹介します。

★環境

データベース:MySQL
プログラム:PHP

テーブル:sample_tb
ID1カラム名
1ABC
2zzz
サンプルのテーブル:sample_tb

PDOによるSQLを実行して、抽出結果を取得するところまで以下のようにコーディングします。

// PDOによるデータベース接続
$dbh = new PDO($dsn, $user, $password);

// SQL文
$sql = 'select a.ID, a.1カラム名 FROM sample_tb a WHERE 1';

// SQLを実行し、結果を取得
$rows = $dbh->query($sql);

次に、SQL取得した結果を書き出します。

// PDOによるデータベース接続
foreach ($rows as $row) {
  echo '<p>';
  echo $row->ID . ':';
  echo $row->1カラム名;
  echo '</p>';
}

上記の書き方だとエラーになります。

カラムの先頭が数字(1カラム名)の場合は、{}で括る必要があります。

// ★誤
echo $row->1カラム名;

// ★正
echo $row->{1カラム名};
実行結果

1:ABC

2:zzz

よかったらシェアしてね!
目次
閉じる