質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

7093閲覧

Undefined offset: 0 のエラー

tuckQ

総合スコア64

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/10/29 13:23

編集2016/10/30 04:47

###前提
目的:WordPressのコメント欄にカスタムコメントの内容を表示する
経緯:

  1. 下記「該当のソースコード」のコードはもともと正常に動いていた
  2. カスタムコメント保存用テーブルにある列の名称を変更「comment」から「pro」に変更
  3. (2.)の修正以降に投稿したコメントの表示欄で「Undefined offset: 0 のエラー」が出るようになった (※「2」の修正前に保存されたデータは正常に表示されている。下記、テーブル構成例のreview_i=1は正常、2,3でエラーが出る)

+------+--------------------------------+-----+-----+
| review_id | treki | pro |
+------+--------------------------------+-----+-----+
|1|10|null|
|2|20|テストデータ|
|3|20|null|
+------+--------------------------------+-----+-----+

###発生している問題・エラーメッセージ

Notice: Undefined offset: 0 in hoge.php on line 100

###該当のソースコード

php

1add_filter( 'get_comment_author_link', 'show_review', 10, 3 ); 2function show_review( $return, $author, $comment_ID ) { 3 global $wpdb; 4 $results = $wpdb->get_results( "SELECT treki FROM wp_review_meta WHERE review_id = $comment_ID", ARRAY_A ); 5 $treki = $results[0]['treki']; 6 7 if ( $treki ) { $return .= '(' . $treki . ')'; } 8 return $return; 9 10}

###試したこと
var_dump($result)をすると、以下の配列が確認できている。

array (size=1) 0 => array (size=1) 'treki' => string '20' (length=2)

考えられる原因のご教示よろしくお願いいたします。

###追伸(この件は下記コードで解決しました。解決に至るまでに試したコードも記述しましたのでご参考ください。)
(1)ARRAY_Aを削除

php

1 $results = $wpdb->get_results( "SELECT treki FROM wp_review_meta WHERE review_id = $comment_ID" ); 2 $treki = $results[0]['treki']; 3 4 if ( $treki ) { $return .= '(' . $treki . ')'; } 5 return $return;

結果 Fatal error: Cannot use object of type stdClass as array in


(2) ARRAY_Nに変更

php

1 $results = $wpdb->get_results( "SELECT treki FROM wp_review_meta WHERE review_id = $comment_ID", ARRAY_N ); 2 $treki = $results[0]['treki']; 3 4 if ( $treki ) { $return .= '(' . $treki . ')'; } 5 return $return;

結果 Notice: Undefined offset: 0 in


(3) ARRAY_Aに戻し、SQL文を下記に変更。

php

1 $results = $wpdb->get_results( "SELECT * FROM wp_review_meta WHERE review_id = $comment_ID", ARRAY_A ); 2 3 if ( $results ) { $return .= '(' . $results[0]['treki'] . ')'; } 4 return $return;

結果 解決

###追伸
「なぜ最初のコードでうまくいかないのか?」が未だに分からないので、お分かりになる方がいらっしゃったら解説いただけるとありがたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ぱっと見て、ARRAY_Aを省略するかARRAY_Nにすれば
と思うのですが、なぜそのタイミングでそういう
現象がでるようになったのかは分かりませんねえ。

投稿2016/10/29 22:26

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tuckQ

2016/10/30 04:48

ご回答ありがとうございます。ARRAY_Aを省略、ARRAY_Nとどちらも試してみたのですが、それだけだとダメでした。いろいろ試しているうちに解決したのですが、エラー原因がよく分からずなのが気になります。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問