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

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

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

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

PHP

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

Q&A

解決済

2回答

3217閲覧

自作テーブルアクセスの始めでつまづいています

diverponta

総合スコア9

WordPress

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

PHP

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

0グッド

1クリップ

投稿2018/06/12 10:45

編集2018/06/13 00:45

前提・実現したいこと

ローカル2016に、XAMPPを入れ、ワードプレスを入れ、自作テーブルを作り
テーブルを、読み書きしたいと考えています。まず、ネットにあるサンプルにて
DBアクセスを試みました。最新のワードプレスを入れています。

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

Fatal error: Uncaught Error: Call to a member function get_results() on null in C:\xampp\htdocs\wp\test.php:5 Stack trace: #0 {main} thrown in C:\xampp\htdocs\wp\test.php on line 5

該当のソースコード

C:\xampp\htdocs\wp\test.php
test.php

<?php // 1st Method - Declaring $wpdb as global and using it to execute an SQL query statement that returns a PHP object global $wpdb; $results = $wpdb->get_results( 'SELECT * FROM wp_options WHERE option_id = 1', OBJECT ); // 2nd Method - Utilizing the $GLOBALS superglobal. Does not require global keyword ( but may not be best practice ) $results = $GLOBALS['wpdb']->get_results( 'SELECT * FROM wp_options WHERE option_id = 1', OBJECT ); --- ### 試したこと IEで、開いただけです。 http://xxxxsvr.example.com/wp/test.php ### 補足情報(FW/ツールのバージョンなど) 普通に、 http://xxxxsvr.example.com/wp/ は、開けて、HPを表示しています。

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

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

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

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

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

kei344

2018/06/12 11:03

質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
退会済みユーザー

退会済みユーザー

2018/06/12 11:05

実ドメイン名、晒さないほうがいいのでは? example.co.jpあるいはexample.comとかでいいよ。
guest

回答2

0

ベストアンサー

test.phpというファイル名は、Wordpressにテンプレートとして認識されないため、Wordpressのグローバル変数である$wpdbは呼べません。
なので、Wordpressの関数や変数を呼び出せるようにファイルの1行目にwp-load.phpをrequireしてあげてください。
そうすればWordpressの関数や変数にWordpress外のファイルからアクセスできるようになります。

php

1require_once( dirname( __FILE__ ) . '/wp-load.php' );

参考サイト

投稿2018/06/13 01:29

d.goto

総合スコア84

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

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

diverponta

2018/06/13 02:06

ありがとうございます。 以下のソースにしたら、動きました。 ```PHP <?php require_once( dirname( __FILE__ ) . '/wp-load.php' ); $results = $wpdb->get_results("SELECT col2 FROM $wpdb->test1"); foreach ($results as $value) { print('<li>'.$value->col2.'</li>'); } ?> ```
guest

0

$GLOBALS['wpdb']が正しく設定されていないのでは?

投稿2018/06/12 11:13

yambejp

総合スコア114784

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

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

diverponta

2018/06/13 00:42

通常、$GLOBALS['wpdb'] は、どこで定義されているのでしょうか。 <?php global $wpdb; echo $GLOBALS['wpdb']; にて、何も表示されません。
diverponta

2018/06/13 02:05

ありがとうございます。 以下のソースにしたら、動きました。 ```PHP <?php require_once( dirname( __FILE__ ) . '/wp-load.php' ); $results = $wpdb->get_results("SELECT col2 FROM $wpdb->test1"); foreach ($results as $value) { print('<li>'.$value->col2.'</li>'); } ?> ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問