前回、WordPressでデータベースにテーブルを追加する方法を紹介しました。
その過程で、PHPを使ってデータベースのテーブルからデータを取得する方法を記載しました。
この過程で私自身、少々つまづいた事がありました。
それは、カラム名の先頭に数字が使われていた場合、エラーが発生してしまう事です。
WordPressで使う場合「global $wpdb」のオブジェクトでSQLを実行し、テーブルの値を取得しました。
// wpdbオブジェクトを生成
global $wpdb;
今回は、WordPressよりもより幅広く使われている「PDO」を例に、エラーが無く取得する記述をご紹介します。
まずはデータベースに接続するプログラムの例を紹介します。
★環境
データベース:MySQL
プログラム:PHP
テーブル:sample_tb
ID | 1カラム名 |
1 | ABC |
2 | zzz |
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