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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

WordPress

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

PHP

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

Q&A

解決済

2回答

867閲覧

【wordpress】php7でのmysqlからの絞り込み検索表示について

terra2018

総合スコア23

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

WordPress

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

PHP

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

0グッド

0クリップ

投稿2019/08/15 04:16

編集2019/08/16 00:44

はじめまして。

wordpressについて、今回サーバーを移行することになったのですが、
前任者から引き継いだもので、phpやmysqlなどがあまり分からずエラーが出て困っています。
どうすれば直るか分かりますでしょうか?
よろしくお願いいたします。

サーバーのphpバージョは今は5.3.3で、今度は7.0.10に変わります。
データベースはmysqlで変わりません。

サイト上でデータベース検索で絞り込み検索できるようにしているのですが、
テストサーバーでデータベース検索すると以下のようにエラーが出てしまいます。

[Table 'wpqa.WHERE' doesn't exist]SHOW FULL COLUMNS FROM `WHERE`

 
phpのsql文は、

$sql= "SELECT * FROM $wpdb->posts_search WHERE 1 ";

 

クエリ実行したときは、以下のように書いてます。

// クエリ実行 $sql = $wpdb->prepare($sql); $rows = $wpdb->get_results($sql); $num = $wpdb->num_rows; print "<div id=\"bn_anchor\"></div><div style=\"border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; background: #e8e8e8; padding: 15px; font-size: 100%;\"><b><font color=\"#00457A\">検索条件</font></b><hr> <font color=\"#00457A\"><b>フリーワード検索:</font> </b>${free_key}<br> <font color=\"#00457A\"><b>年月:</font> </b>${y1_sql} ~ ${y2_sql}<br> print "<font color=\"#00457A\"><b>テーマ:</font></b>\"${bn_theme}\"<br />"; $bn_area = explode('%%" OR bn_area LIKE "%%', $bn_area); $bn_area = implode('","', $bn_area); print "<font color=\"#00457A\"><b>地域:</font></b>\"${bn_area}\"<br></div><br />"; $bn_theme = explode('%%" OR bn_theme LIKE "%%', $bn_theme); $bn_theme = implode('","', $bn_theme); print "<div id=\"bn_anchor\"></div><font color=\"#0074bf\"><b>${num}</font>件の記事が見つかりました。</b><br />"; // 検索結果メッセージ // $message = ($rows) ? "該当する記事が見つかりませんでした。" : count($rows)."件の記事が見つかりました。"; // 企業名を表示 if($rows){ foreach ($rows as $row) { echo "<table class=\"bn_search_result\"><tr><th><b>掲載</b></th><td>".$row->bn_media."</td></tr> <tr><th><b>シリーズ名</b></th><td>".$row->bn_series."</td></tr> <tr><th><b>タイトル</b></th><td>".$row->bn_title."</td></tr> <tr><th><b>記事</b></th><td><a href=\"".$row->bn_url."\" style=\"color:#04b1ea;\">".$row->bn_url."</a></td></tr> </table>"; } } }else{ print "<br><div style=\"border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; background: #dddddd; padding: 15px; font-size: 100%;\"><b><font color=\"#00457A\">検索条件を入力してください■</b><br></font>"; } ?> <!-- 検索結果メッセージ --> <p> <!--<?php echo $message; ?>--> </p>

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

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

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

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

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

terra2018

2019/08/16 00:44

m.ts10806さん ありがとうございます。 コード追記しましたがこちらでよろしいでしょうか?
m.ts10806

2019/08/16 01:13

$sql をechoした結果 はどれにあたりますか? 想定通りのSQLになるかどうかを確認したいのです
terra2018

2019/08/16 02:01 編集

$sql= "SELECT * FROM `wp_posts_search` WHERE 1 "; に変更してみたら正常に表示されました。 度々ありがとうございました。
m.ts10806

2019/08/16 02:04

テーブル名直書きが良いかどうかは一考いただきたく(そのために用意されている$wpdb->posts_searchという変数だと思うので)
terra2018

2019/08/16 02:07

セキュリティ的に問題があるということでしょうか?
m.ts10806

2019/08/16 02:09

結構大事な内容なので回答にコメントを続けておきます。
guest

回答2

0

$wpdb->posts_search

に値が入ってきてないのだと思います。
php7になって、参照渡しパラメータは省略できなくなっています。
なので、posts_searchに値を渡すか、メソッドの引数を参照渡しから値渡しに修正してください。

下記の記事が参考になるかもしれません。

https://blog.verygoodtown.com/2017/08/php7-1feedwordpress-warning-parameter-2-to-syndicationdataqueriesposts_search-expected-to-be-a-reference-value-given-in-error/

投稿2019/08/15 04:47

編集2019/08/15 04:49
2or3

総合スコア60

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

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

terra2018

2019/08/16 00:45

2or3さん 回答ありがとうございます。 コードを追記したのですが具体的にどこを直せばよいか分かりますでしょうか?
guest

0

自己解決

$sql= "SELECT * FROM wp_posts_search WHERE 1 ";

に変更してみたら正常に表示されました。

投稿2019/08/16 02:02

terra2018

総合スコア23

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

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

m.ts10806

2019/08/16 02:14

テーブル名直書きが良いかどうかは一考する必要があります。 WordPress側の仕様変更やアップデートでテーブル名が変わってしまった場合にすぐに感知できませんし、毎回書き換える必要があります。 wpdbクラスはデータベースとのやりとりに使用される一連の情報を全て持っている機能のようですね。 https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wpdb_Class となると、そこで定義されている変数や関数を利用することで仕様変更などによる変化を吸収しているともいえるので、自身が設置したわけでもないDB関係の情報を扱うのでしたら、wpdbからテーブル名を取得したほうがメンテナンス性も高くなるということです。 セキュリティ上の問題が発生しているわけではありません。 「とりあえず今動けばいい」は日々変化・進歩していくプログラミングの世界ではNGです。メンテナンス性や可読性 含めて後々のことまで考えて実装していく必要があります。 https://paiza.hatenablog.com/entry/2018/03/28/%E9%96%8B%E7%99%BA%E7%B5%8C%E9%A8%93%E3%82%BC%E3%83%AD%E3%81%AE%E5%96%B6%E6%A5%AD%E3%81%8C%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%92%E5%8B%89%E5%BC%B7%E3%81%97%E3%81%A6#%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%E5%8B%95%E3%81%91%E3%81%B0OK%E3%81%98%E3%82%83%E3%81%AA%E3%81%8F%E3%81%A6%E8%AA%AD%E3%81%BF%E3%82%84%E3%81%99%E3%81%95%E3%82%82%E5%A4%A7%E4%BA%8B%E3%81%AA%E3%82%93%E3%81%A0
terra2018

2019/08/16 02:25

m.ts10806さん 詳細な説明ありがとうございます。 もう少し勉強して直したいと思います。 ありがとうございました。
m.ts10806

2019/08/16 02:40 編集

基本的な対応方針は既に2or3さんの回答で出ているのですが、 それが反映されていないように見えました。 まずはコードをバックアップとった上で回答に提示された記事通りやってみることをすすめます。 (おそらくPHP自体を使われているわけではなさそうなので)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問